home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Reference / the cmsp digests ('94-'97) / csmp digest Vol 4 No 031 < prev    next >
Text File  |  1997-01-03  |  123KB  |  3,644 lines

  1. C.S.M.P. Digest             Thu, 02 Jan 97       Volume 4 : Issue 31
  2.  
  3. Today's Topics:
  4.  
  5.         Best way to support music?
  6.         Codewarrior vs. Symantec C++
  7.         Debugging an INIT, how ?
  8.         DirectX on the Mac??
  9.         Easy way Pict -> Rgn or Mask?
  10.         FSpCreate Questions.
  11.         FatComponent for a QT DataHandler
  12.         Get selected files on Finder.
  13.         Help with GetKeys();
  14.         How to find dirID of my application?
  15.         How to get one file at a time in a Mac directory
  16.         Launch app with arg
  17.         Launching a program
  18.         Launching application by signature
  19.         PPC ExitToShell Patch?
  20.         RPC for Macintosh
  21.         Shutdown utility for mac
  22.         [Q] Bringing my application to front
  23.         [Q] Fading in Thousands
  24.         [Q] Playing QT Movies Backwards?
  25.         [Q] Show-Hide menubar with QuickTime??
  26.         [Q] Suspended or Hidden: How do I tell?
  27.         [Q] Useful error messages?
  28.  
  29.  
  30.  
  31. The Comp.Sys.Mac.Programmer Digest is moderated by Mark Aiken
  32. (marka@ee.mcgill.ca).
  33.  
  34. The digest is a collection of article threads from the internet
  35. newsgroups comp.sys.mac.programmer.help, csmp.tools, csmp.misc and
  36. csmp.games. It is designed for people who read news semi-regularly and
  37. want an archive of the discussions.  If you don't know what a
  38. newsgroup is, you probably don't have access to it. Ask your systems
  39. administrator(s) for details. If you don't have access to news, you
  40. may still be able to post messages to the group by using a mail server
  41. like anon.penet.fi (mail help@anon.penet.fi for more information).
  42.  
  43. Each issue of the digest contains one or more sets of articles (called
  44. threads), with each set corresponding to a 'discussion' of a particular
  45. subject.  The articles are not edited; all articles included in this digest
  46. are in their original posted form (as received by our news server at
  47. ee.mcgill.ca).  Article threads are not added to the digest until the last
  48. article added to the thread is at least two weeks old (this is to ensure that
  49. the thread is dead before adding it to the digest).  Article threads that
  50. consist of only one message are generally not included in the digest.
  51.  
  52. The digests can be obtained by email, ftp or through the World Wide Web.
  53.  
  54. If you want to receive the digest by mail, send email to 
  55. majordomo@ee.mcgill.ca with no subject and one of the following commands
  56. as body:
  57.  
  58.     help                        Sends you a summary of commands
  59.     subscribe csmp                      Adds you to the mailing list
  60.     unsubscribe csmp                    Removes you from the list
  61.  
  62. Once you have subscribed, you will automatically receive each new
  63. issue as it is created.
  64.  
  65. Back issues are available by ftp from Info-Mac mirror sites in the
  66. per/csmp subdirectory, e.g.
  67.  
  68.   ftp://sumex-aim.stanford.edu/info-mac/per/csmp/
  69.  
  70. The contents of all back issues can be searched by accessing the
  71. following URL, courtesy of Andrew Barry (ajbarry@ozemail.com.au):
  72.  
  73.     http://marvin.stattech.com.au/search.html
  74.  
  75. They can also be searched through the following URLs, thanks to
  76. Tim Tuck (Tim.Tuck@sensei.com.au):
  77.  
  78.     http://wais.sensei.com.au/searchform.html
  79.     wais://wais.sensei.com.au:210/csmp?
  80.  
  81. -------------------------------------------------------
  82.  
  83. >From kurisuto@babel.ling.upenn.edu (Sean Crist)
  84. Subject: Best way to support music?
  85. Date: 25 Nov 1996 03:39:13 GMT
  86. Organization: University of Pennsylvania
  87.  
  88. I'm writing an application where it would be appropriate for the user to
  89. import some kind of music file created by another application and play it.
  90. What would be the least-effort, most effective way to do this?
  91.  
  92. Would the MOD format be a good one to support?  I know that it used to be
  93. possible to use the music-synthesizing code resources from Sound Trecker
  94. for this purpose, although I can't find the interface or documentation for
  95. any recent version of those resources.
  96.  
  97. What could QuickTime do for me?  Other than movies, it does provide some
  98. kind of support for real-time music synthesis, doesn't it?  Can I easily
  99. use imported MIDI data with QuickTime?  Which manual should I RTFM?
  100.  
  101. Thanks.
  102.  
  103.   \/ __ __    _\_     --Sean Crist  (kurisuto@unagi.cis.upenn.edu)
  104.  ---  |  |    \ /     For a free copy of the Bill of Rights, finger
  105.   _| ,| ,|   -----    this account.  It's also available through
  106.   _| ,| ,|    [_]     my homepage:
  107.    |  |  |    [_]     http://www.ling.upenn.edu/~kurisuto/
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. +++++++++++++++++++++++++++
  116.  
  117. >From slur@world.std.com (Scott Lahteine)
  118. Date: Tue, 26 Nov 1996 07:02:36 GMT
  119. Organization: Hot Eggs
  120.  
  121. In article <57b4d1$oic@netnews.upenn.edu>, kurisuto@babel.ling.upenn.edu
  122. (Sean Crist) wrote:
  123.  
  124. >I'm writing an application where it would be appropriate for the user to
  125. >import some kind of music file created by another application and play it.
  126. >What would be the least-effort, most effective way to do this?
  127. >
  128. >Would the MOD format be a good one to support?  I know that it used to be
  129. >possible to use the music-synthesizing code resources from Sound Trecker
  130. >for this purpose, although I can't find the interface or documentation for
  131. >any recent version of those resources.
  132.  
  133.  
  134.      Check out PlayerPro 4.5.3 Demo available all over the web.  (I found
  135. at the MIT Hyperarchive)  It uses the same MOD format familiar from the
  136. old Amiga days, still an _extremely_ popular format for in-program music. 
  137. It supports four voices, and the format is extremely simple.  I'm unsure
  138. whether PlayerPro's docs cover the MOD format, but docs are Certainly
  139. Available from those Amiga people!
  140.  
  141.      I used MODs awhile ago and enjoyed the ease and portability of both
  142. the format and the player.  The current Mac version supports QT
  143. instruments and samples, and gives insight into the workings of Mac
  144. sound.  The demo version also includes a fully functional sound editor you
  145. might find useful, though the interface is -quirky-.  Cut, amplify, echo,
  146. and all that are in there, faster than SoundHack, more stable than
  147. SampleEditor.
  148. -- 
  149. - scott                             slur@world.std.com
  150.  
  151.        "A painting of a rice cake does not satisfy hunger."
  152.  
  153. +++++++++++++++++++++++++++
  154.  
  155. >From karlbunker@aol.com
  156. Date: 9 Dec 1996 14:19:30 GMT
  157. Organization: AOL http://www.aol.com
  158.  
  159. Kenneth Lu <kenlu@mit.edu> sez:
  160.  
  161. > I, too, really want to be able to use MODs in my programs. 
  162. > I also found the SoundTrecker libraries on InfoMac, but they are really
  163. > old and don't support CodeWarrior.. they only support THINK. 
  164. > Does anyone know of any method to get a new version on these
  165. > SoundTrecker libraries? 
  166. > The man who programmed Sound Trecker lives in Germany and the latest
  167. > version of Sound Trecker contains no email address.
  168.  
  169. Look for PlayerPro and its developer's kit. Last time I checked, you could
  170. use the PlayerPro libraries in your programs for no charge, and the
  171. package was well supported with updates.
  172.  
  173. Karl Bunker
  174. KarlBunker@aol.com
  175. http://users.aol.com/karlbunker/
  176.  
  177.  
  178. +++++++++++++++++++++++++++
  179.  
  180. >From Kenneth Lu <kenlu@mit.edu>
  181. Date: Sun, 08 Dec 1996 21:28:31 -0500
  182. Organization: M.I.T.
  183.  
  184. kurisuto@babel.ling.upenn.edu (Sean Crist) wrote:
  185. > Would the MOD format be a good one to support?  I know that it used to be
  186. > possible to use the music-synthesizing code resources from Sound Trecker
  187. > for this purpose, although I can't find the interface or documentation for
  188. > any recent version of those resources.
  189.  
  190. I, too, really want to be able to use MODs in my programs.
  191.  
  192. I also found the SoundTrecker libraries on InfoMac, but they are really
  193. old and don't support CodeWarrior.. they only support THINK.
  194.  
  195. Does anyone know of any method to get a new version on these
  196. SoundTrecker libraries?
  197.  
  198. The man who programmed Sound Trecker lives in Germany and the latest
  199. version of Sound Trecker contains no email address.
  200.  
  201. Comrade in plight,
  202.  
  203. -ToastyKen
  204.  
  205. P.S. Try to avoid QuickTime MIDI if at all possible.  The synthesizer's
  206. playback quality really sucks.
  207.  
  208. - -----------------------------
  209. | Kenneth Lu -- kenlu@mit.edu |
  210. - -----------------------------
  211.  
  212. +++++++++++++++++++++++++++
  213.  
  214. >From Kenneth Lu <kenlu@mit.edu>
  215. Date: Mon, 09 Dec 1996 14:53:44 -0500
  216. Organization: M.I.T.
  217.  
  218. [Summary: Someone else and I both wanted to find a newer version of the
  219. Sound Trecker API that would work with CodeWarrior, and Karl mentioned
  220. PlayerPro.]
  221.  
  222. Thanks, Karl!  I got it off of InfoMac.  The player is pretty dam'd
  223. expensive for shareware,
  224.  
  225. but the API is 100% free for any use!
  226.  
  227. I find that really impressive.  It's in CodeWarrior format, too!  Thanks
  228. again!
  229.  
  230. -ToastyKen
  231.  
  232. - -----------------------------
  233. | Kenneth Lu -- kenlu@mit.edu |
  234. - -----------------------------
  235.  
  236. +++++++++++++++++++++++++++
  237.  
  238. >From elliottmc@cf.ac.uk (Mark Elliott)
  239. Date: Thu, 12 Dec 1996 15:07:25 GMT
  240. Organization: Department of Chemistry, University of Cardiff
  241.  
  242. The PlayerPro libraries are good and free. If you want to manipulate the
  243. music files, you will need the PlayerPro application which is shareware,
  244. although I believe the fee is a ridiculous $100 or thereabouts. I paid
  245. before he put the price up. This stuff should all be on info-mac.
  246. Apologies if the price is not correct.
  247.  
  248. Mark
  249.  
  250.  
  251.  
  252. In article <32AB7949.26FD@mit.edu>, kenlu@mit.edu wrote:
  253.  
  254. > kurisuto@babel.ling.upenn.edu (Sean Crist) wrote:
  255. > > Would the MOD format be a good one to support?  I know that it used to be
  256. > > possible to use the music-synthesizing code resources from Sound Trecker
  257. > > for this purpose, although I can't find the interface or documentation for
  258. > > any recent version of those resources.
  259. > I, too, really want to be able to use MODs in my programs.
  260. > I also found the SoundTrecker libraries on InfoMac, but they are really
  261. > old and don't support CodeWarrior.. they only support THINK.
  262. > Does anyone know of any method to get a new version on these
  263. > SoundTrecker libraries?
  264. > The man who programmed Sound Trecker lives in Germany and the latest
  265. > version of Sound Trecker contains no email address.
  266. > Comrade in plight,
  267. > -ToastyKen
  268. > P.S. Try to avoid QuickTime MIDI if at all possible.  The synthesizer's
  269. > playback quality really sucks.
  270. > -------------------------------
  271. > | Kenneth Lu -- kenlu@mit.edu |
  272. > -------------------------------
  273.  
  274. ---------------------------
  275.  
  276. >From markn@ms8.hinet.net ()
  277. Subject: Codewarrior vs. Symantec C++
  278. Date: 13 Dec 1996 14:24:38 GMT
  279. Organization: DCI HiNet
  280.  
  281. I notice that in the Mac Warehouse catalog, the price of Codewarrior is 
  282. more than four times the price of Symantec C++.  What is the difference 
  283. between these two compilers?  Is Codewarrior really more than four times 
  284. better?
  285.  
  286. Mark
  287.  
  288. +++++++++++++++++++++++++++
  289.  
  290. >From pteeson@interlog.com (Peter Teeson)
  291. Date: 14 Dec 1996 13:49:32 GMT
  292. Organization: InterLog Internet Services
  293.  
  294. In article <58rov6$7m5@netnews.hinet.net>, markn@ms8.hinet.net () wrote:
  295.  
  296. >I notice that in the Mac Warehouse catalog, the price of Codewarrior is 
  297. >more than four times the price of Symantec C++.  What is the difference 
  298. >between these two compilers?  Is Codewarrior really more than four times 
  299. >better?
  300. >
  301. >Mark
  302.  
  303. I've been a long time user of the THINK C product which was bought by Symantec
  304. years ago. I've developed shrinkwrap with it for some well know companies.
  305. It's a very professional tool set. IMHO the IDE is still ahead of CodeWarrior.
  306.  
  307. HOWEVER I no longer use it because of Symantec's long standing lack of support,
  308. lack of continued development and arrogantly unresponsive attitude.
  309.  
  310. With all its warts, some of which will disappear in time I'm sure, CodwWarrior
  311. (and ETO) are the professional tools I use these days on a daily basis.
  312.  
  313. The most impressive things about Metrowerks are:
  314. (0) They listen AND respond to their customers
  315. (1) They listen AND respond to their customers
  316. (2) They listen AND respond to their customers
  317.  
  318. The major weakness' in their IDE (versus Symantec) imho:
  319. (0) no ability to have multiple projects open simultaneously
  320. (1) no ability to nest projects (great for doing builds)
  321. (2) mildly less mature compiler
  322.  
  323. A major strength is the PowerPlant framework/class library which is pretty well
  324. the best thing since sliced bread.
  325.  
  326. Sad as I am to see Symantec repeatedly dropping the ball I am thankful that Metrowerks
  327. is there to pick it up and score.
  328.  
  329. Go with CodeWarrior... you'll not regret it.
  330.  
  331. Peter
  332.  
  333. -- 
  334. General Consulting & Research Inc.
  335. 712 - 24 Forest Manor Road
  336. Willowdale, ON
  337. M2J 1M3
  338. 416-494-5888 voice  416-494-4832 fax
  339.  
  340. "Developing quality software requires a great deal of effort
  341. over a long period of time." Doug Schmidt - C++ Report May 1996
  342.  
  343. +++++++++++++++++++++++++++
  344.  
  345. >From donarb@wolfenet.com (Don Arbow)
  346. Date: Fri, 13 Dec 1996 11:39:42 -0800
  347. Organization: Wolfe Internet Access, L.L.C.
  348.  
  349. In article <58rov6$7m5@netnews.hinet.net>, markn@ms8.hinet.net () wrote:
  350.  
  351. :  I notice that in the Mac Warehouse catalog, the price of Codewarrior is 
  352. :  more than four times the price of Symantec C++.  What is the difference 
  353. :  between these two compilers?  Is Codewarrior really more than four times 
  354. :  better?
  355. :  
  356. :  Mark
  357.  
  358. Well, I'm not sure what the Symantec package includes, but with
  359. Codewarrior you get C/C++, Pascal and Java language support.  For
  360. platforms, you get 68k, PPC, Windows (95/NT), Magic Cap and BeOS.  Once
  361. you pay $399, its only $199 per year after that to renew your
  362. subscription.
  363.  
  364. Don
  365.  
  366. -- 
  367. - ------------------------------------------------------------------------
  368.     \ | /    Don Arbow, Partner, CTO |  donarb@wolfenet.com
  369.   -- EDO --  EveryDay Objects, Inc.  |   http://www.edo-inc.com
  370.     / | \    Seattle, WA             |
  371. - ------------------------------------------------------------------------
  372.   My Prographing web page:   http://www.wolfe.net/~donarb/Dataflow.html
  373.         "The fix is only temporary, unless it works" - Red Green
  374. - ------------------------------------------------------------------------
  375.  
  376. +++++++++++++++++++++++++++
  377.  
  378. >From Rod Magnuson <RMagnuson@Symantec.com>
  379. Date: Fri, 13 Dec 1996 17:58:18 -0700
  380. Organization: Symantec Corp.
  381.  
  382. markn@ms8.hinet.net wrote:
  383. > I notice that in the Mac Warehouse catalog, the price of Codewarrior is
  384. > more than four times the price of Symantec C++.  What is the difference
  385. > between these two compilers?  Is Codewarrior really more than four times
  386. > better?
  387. > Mark
  388. Simple answer would be "no", but really it depends on what you are
  389. doing. If you are interested in learning C++ or doing some programming
  390. in your spare time than either environment will probably do you fine. If
  391. you have special needs (want to write Windows, Magic Cap, or BE (this
  392. may be all of us soon)) you should go with CodeWarrior, since Symantec
  393. does not provide solutions for this. In either case I'd suggest looking
  394. at both products.
  395.  
  396. <plug on>
  397. If you want to learn java, I wouldn't recommend going with a swiss army
  398. knife product and I'd suggest going with something like Visual Cafe for
  399. Macintosh, of course I'm biased (I work on the Visual Cafe team).
  400. <plug off>
  401.  
  402. Good luck!
  403. Rod
  404.  
  405. +++++++++++++++++++++++++++
  406.  
  407. >From scr@mindspring.com (Steve Rose)
  408. Date: Sat, 14 Dec 1996 00:01:57 -0500
  409. Organization: MindSpring Enterprises
  410.  
  411. In article <32B1FBAA.52BE@Symantec.com>, Rod Magnuson
  412. <RMagnuson@Symantec.com> wrote:
  413.  
  414. > <plug on>
  415. > If you want to learn java, I wouldn't recommend going with a swiss army
  416. > knife product and I'd suggest going with something like Visual Cafe for
  417. > Macintosh, of course I'm biased (I work on the Visual Cafe team).
  418. > <plug off>
  419.  
  420. So when will Visual Cafe Mac be released? The PR1 release is barely useable
  421. right now. It takes several minutes just to change a component name on my
  422. PowerMac 8100, and the debugger is far too limitedbe useful. I have taken
  423. to laying out a screen in Visual Cafe, and then using Codewarrior 10 to
  424. edit and debug the code!
  425.  
  426. - ------------------------------------------
  427. scr@mindspring.com
  428. http://www.mindspring.com/~scr/scr_Home.html
  429.  
  430. +++++++++++++++++++++++++++
  431.  
  432. >From Rod Magnuson <RMagnuson@Symantec.com>
  433. Date: Sat, 14 Dec 1996 04:28:10 -0700
  434. Organization: Symantec Corp.
  435.  
  436. Steve Rose wrote:
  437. > In article <32B1FBAA.52BE@Symantec.com>, Rod Magnuson
  438. > <RMagnuson@Symantec.com> wrote:
  439. > > <plug on>
  440. > > If you want to learn java, I wouldn't recommend going with a swiss army
  441. > > knife product and I'd suggest going with something like Visual Cafe for
  442. > > Macintosh, of course I'm biased (I work on the Visual Cafe team).
  443. > > <plug off>
  444. > So when will Visual Cafe Mac be released? The PR1 release is barely useable
  445. > right now. It takes several minutes just to change a component name on my
  446. > PowerMac 8100, and the debugger is far too limitedbe useful. I have taken
  447. > to laying out a screen in Visual Cafe, and then using Codewarrior 10 to
  448. > edit and debug the code!
  449. > --------------------------------------------
  450. > scr@mindspring.com
  451. > http://www.mindspring.com/~scr/scr_Home.html
  452. Visual Cafe will be released REAL SOON NOW. That's exactly what I've
  453. been told to say so as to not give our competition any hints as to the
  454. date. But if I was to hint at it, and I'm certain our competition could
  455. guess at this (so I'm not giving anything away), we would probably want
  456. our launch to be at a big mac event early in the year.
  457.  
  458. Typing performance problems? Yep we had em. They will be fixed in the
  459. release. As for the debugger, we have made some additions (watch window)
  460. and it is now pretty stable and fast, but is there anything in
  461. particular we're missing. Run into anything else annoying?
  462.  
  463. Appreciate the feedback!
  464. Rod
  465.  
  466. +++++++++++++++++++++++++++
  467.  
  468. >From pteeson@interlog.com (Peter Teeson)
  469. Date: 18 Dec 1996 08:39:36 GMT
  470. Organization: InterLog Internet Services
  471.  
  472. In article <5919c3$2r0@stc06.ctd.ornl.gov>, "Thomas L. Ferrell" <ferrelltl@ornl.gov> wrote:
  473.  
  474. >Mick and others have reported the straight story on this--CW support is 
  475. >tremendous. I use Sym, CW, & MPW. One thing Metrowerks has done to Sym 
  476. >is to get them going in the right direction in some ways. I hope that 
  477. >they continue to boost up their SW and support so that we'll continue to 
  478. >have options. It would be awfully hard for me to give up Sym altogether, 
  479. >but I know the deep-seated anger that many feel.
  480. >tom
  481.  
  482. Hey I don't feel anger...I'm not paid to run Symantec. This is about the tools of our trade.
  483.  
  484. As the new artisans and craftspeople we choose what for us are the best tools.
  485. Symantec, Metrowerks, Appmaker,  and for that matter a renewed Apple MPW team,
  486. provide us with them.
  487.  
  488. I just periodically go shopping for nifty new tools to make my life easier.
  489.  
  490. Symantec management would appear to continue to suffer from severe rectal myopia.
  491. Their *engineers* have done a great job...and many of the great ones have moved on to
  492. more fertile environments. Many of them are still there.
  493.  
  494. However personally speaking I no longer expect, based on the evidence, to see any sustained 
  495. effort on Symantec's part to support and enhance their IDE. They are all chanting the Java 
  496. mantra these days.
  497.  
  498. Fortunately or unfortunately that is not the arena in which I need tools.
  499.  
  500. Just my 0.02¢.
  501.  
  502. Peter
  503.  
  504. -- 
  505. General Consulting & Research Inc.
  506. 712 - 24 Forest Manor Road
  507. Willowdale, ON
  508. M2J 1M3
  509. 416-494-5888 voice  416-494-4832 fax
  510.  
  511. "Developing quality software requires a great deal of effort
  512. over a long period of time." Doug Schmidt - C++ Report May 1996
  513.  
  514. +++++++++++++++++++++++++++
  515.  
  516. >From "Thomas L. Ferrell" <ferrelltl@ornl.gov>
  517. Date: 15 Dec 1996 16:35:15 GMT
  518. Organization: Oak Ridge National Lab
  519.  
  520. Mick and others have reported the straight story on this--CW support is 
  521. tremendous. I use Sym, CW, & MPW. One thing Metrowerks has done to Sym 
  522. is to get them going in the right direction in some ways. I hope that 
  523. they continue to boost up their SW and support so that we'll continue to 
  524. have options. It would be awfully hard for me to give up Sym altogether, 
  525. but I know the deep-seated anger that many feel.
  526. tom
  527.  
  528.  
  529.  
  530. ---------------------------
  531.  
  532. >From Olivier Beaudoux <beaudoux@lra.eseo.fr>
  533. Subject: Debugging an INIT, how ?
  534. Date: Fri, 06 Dec 1996 15:03:40 -0800
  535. Organization: Universite d'Angers, France.
  536.  
  537. Hi,
  538.  
  539. I'm programming an INIT using CodeWarior C/C++. 
  540. How can I debug it ?
  541. Can I reinstall new version of my INIT without reboot the system ?
  542.  
  543. Thanks for help.
  544. Bod
  545.  
  546. +++++++++++++++++++++++++++
  547.  
  548. >From david_rehring@gdt.com (David Rehring)
  549. Date: Mon, 09 Dec 1996 12:36:11 -0800
  550. Organization: GDT Softworks, Inc.
  551.  
  552. >>On Fri, Dec 6, 1996,3:03 PM Olivier Beaudoux wrote:
  553. >>>Hi,
  554. >>>
  555. >>>I'm programming an INIT using CodeWarior C/C++. 
  556. >>>How can I debug it ?
  557. >>>Can I reinstall new version of my INIT without reboot the system ?
  558. >>>
  559. >>>Thanks for help.
  560. >>>Bod
  561. >>>
  562. >>End of excerpt from Olivier Beaudoux.
  563.  
  564. Jasik's Debugger.
  565.  
  566. -make a .SYM(using CW) file and .dsi file(just a text file) containing
  567.  
  568. =B
  569. main
  570.  
  571. It's THE debugger to use debugging code resources, esp. ones that have code
  572. that runs at interrupt time (like completion routines).
  573.  
  574. Later,
  575.  
  576. -- 
  577. David Rehring
  578. Senior Software Engineer
  579. GDT Softworks, Inc.
  580. And all around insane guy!
  581.  
  582. +++++++++++++++++++++++++++
  583.  
  584. >From andym@netmanage.com
  585. Date: Mon,  9 Dec 96 09:12:06 +0000
  586. Organization: (none)
  587.  
  588.  
  589. Well this is a tough one.
  590. If your INIT patches a trap then there's no way I know of to reinstall it 
  591. without rebooting.
  592. Here's some things I use:
  593. Ä Work on 2 machines. Debugging an INIT on the same machine is a pain :-)
  594. Ä Write your own DebugStr routine - here's the one I use:
  595.  
  596. void DebugMessage(Str255 p, short errNo)
  597.  
  598. {
  599.   Str63 errstr;
  600.   
  601.   if(errNo==0)
  602.      DebugStr(p);
  603.       else
  604.        {
  605.         DebugStr(p);
  606.         NumToString(errNo,errstr);
  607.         DebugStr(errstr);
  608.         } 
  609.   
  610.   }
  611.  
  612.  
  613. Ä Call this routine in strategic places, i.e. before and after patching the 
  614. trap, in the patch, and in error checking. The good thing about it is that 
  615. you can control the flow, 
  616. like :
  617. DebugMessage("\p Entering the function foo() ",0); 
  618. and check for errors: 
  619. DebugMessage("\pTried to call Bar().Error returned is ",errNo);
  620.  
  621. Ä Check for errors!
  622. Memory , Resource and File Manager errors should be checked religiously.
  623. Always call MemError() after each memory allocation and ResError() after 
  624. each Res Mgr call.
  625. Ä Don't assume anything in an INIT.
  626. You're operating in a very hostile environment :-)
  627. You can't allocate too much memory, you can't get to your globals without 
  628. SetCurrentA4()/SetA4(), your resource file is closed, you don't have the 
  629. access to the events ( unless it's a JGNE filter)  etc, etc...
  630. Writing an INIT is sorta like sneaking into someone's house in the middle of 
  631. the night and trying to do a spring cleaning  :-)
  632.  
  633. But it's fun:-)
  634.  
  635. Good luck
  636.  
  637. HTH, Andy
  638.  
  639.  
  640.  
  641.  
  642.  
  643. On Fri, Dec 6, 1996,3:03 PM Olivier Beaudoux wrote:
  644. >Hi,
  645. >
  646. >I'm programming an INIT using CodeWarior C/C++. 
  647. >How can I debug it ?
  648. >Can I reinstall new version of my INIT without reboot the system ?
  649. >
  650. >Thanks for help.
  651. >Bod
  652. >
  653. End of excerpt from Olivier Beaudoux.
  654.  
  655.  
  656.  
  657.  
  658. ---------------------------
  659.  
  660. >From dsi@interaccess.com (Taz)
  661. Subject: DirectX on the Mac??
  662. Date: Sat, 07 Dec 1996 05:56:34 GMT
  663. Organization: InterAccess, Chicago's best Internet Service Provider
  664.  
  665. Is there anyone who has heard of DirectX on the MAC??
  666. Is it real ? Is it fast?? 
  667. Thanks Bob.
  668.  
  669. +++++++++++++++++++++++++++
  670.  
  671. >From William Jones <jjones@cswnet.com>
  672. Date: Sat, 14 Dec 1996 04:37:00 -0600
  673. Organization: CSW Net, Inc.
  674.  
  675. Taz wrote:
  676. > Is there anyone who has heard of DirectX on the MAC??
  677. > Is it real ? Is it fast??
  678. > Thanks Bob.
  679.  
  680. Are you serious? It's like asking if Microsoft is going to port the
  681. Windows Explorer to the Mac.
  682. DirectX was developed my Microsoft so games makers could access
  683. video(and sound) at the lowest-levels while in Windows. That is why Win
  684. 3.1 never had any realtime 3-d games but DOS did. (In DOS programmers
  685. can do whatever they want)
  686.  
  687. William Jones
  688.  
  689. +++++++++++++++++++++++++++
  690.  
  691. >From jc@or.psychology.dal.ca (John Christie)
  692. Date: 15 Dec 1996 20:35:37 GMT
  693. Organization: ISINet, Nova Scotia
  694.  
  695.     If you use CodeWarrior you will soon be able to use GameWerks 
  696. that will allow you to develop one game that works cross platform.  On 
  697. the Mac it uses Game Sprockets and on the PC it uses DirectX.
  698.  
  699. --
  700.  
  701. - ----------------------------------------------------------------
  702.  
  703. John Christie
  704.  
  705. "You aren't free because you CAN choose - only if you DO choose."
  706.  
  707. "All you are is the decisions you make.  If you let circumstances make 
  708. them for you then what you are becomes very easy to estimate."
  709.  
  710. +++++++++++++++++++++++++++
  711.  
  712. >From dsi@interaccess.com (Taz)
  713. Date: Sun, 15 Dec 1996 23:31:40 GMT
  714. Organization: InterAccess, Chicago's best Internet Service Provider
  715.  
  716. Just to let you know I have found out it
  717. exists but runs like .... (you fill it in) on the MAC.
  718. Bob.
  719.  
  720. >Taz wrote:
  721. >> 
  722. >> Is there anyone who has heard of DirectX on the MAC??
  723. >> Is it real ? Is it fast??
  724. >> Thanks Bob.
  725. >
  726. >Are you serious? It's like asking if Microsoft is going to port the
  727. >Windows Explorer to the Mac.
  728. >DirectX was developed my Microsoft so games makers could access
  729. >video(and sound) at the lowest-levels while in Windows. That is why Win
  730. >3.1 never had any realtime 3-d games but DOS did. (In DOS programmers
  731. >can do whatever they want)
  732. >
  733. >William Jones
  734.  
  735.  
  736. +++++++++++++++++++++++++++
  737.  
  738. >From rrclark@artsci.wustl.edu (R. Ryan Clark)
  739. Date: Mon, 16 Dec 1996 09:31:46 GMT
  740. Organization: Washington University in St. Louis, MO USA
  741.  
  742. On Sat, 14 Dec 1996 04:37:00 -0600, William Jones <jjones@cswnet.com>
  743. wrote:
  744.  
  745. >Taz wrote:
  746. >> 
  747. >> Is there anyone who has heard of DirectX on the MAC??
  748. >> Is it real ? Is it fast??
  749. >> Thanks Bob.
  750. >
  751. >Are you serious? It's like asking if Microsoft is going to port the
  752. >Windows Explorer to the Mac.
  753. >DirectX was developed my Microsoft so games makers could access
  754. >video(and sound) at the lowest-levels while in Windows. That is why Win
  755. >3.1 never had any realtime 3-d games but DOS did. (In DOS programmers
  756. >can do whatever they want)
  757.  
  758. Actually, Microsoft IS releasing DirectX for the Powermac platform.
  759. I don't know if it's available yet, or how well it performs.
  760. I suppose it will be most useful for the translation of Win95 games to
  761. the Macintosh.
  762.  
  763.     -R. Ryan Clark
  764.  
  765. ---------------------------
  766.  
  767. >From Stephen Kay <70714.1356@CompuServe.COM>
  768. Subject: Easy way Pict -> Rgn or Mask?
  769. Date: 9 Dec 1996 23:00:40 GMT
  770. Organization: TechniSound
  771.  
  772. Is there an easy way to get the outline of a pict so you can copy 
  773. the pict through it as a mask onto an already drawn background? I've
  774. been trying to use CalcMask, but it I'm having trouble with grey 
  775. scales. i.e. I want the outline of any pixel that's non-white.
  776.  
  777. Thanks,
  778.  
  779. -- 
  780. Stephen Kay - composer, producer, programmer
  781.  
  782. +++++++++++++++++++++++++++
  783.  
  784. >From BHuey@worldnet.att.net (Hugh Johnson)
  785. Date: Mon, 09 Dec 1996 18:38:08 -0600
  786. Organization: Semplice
  787.  
  788. In article <58i5mo$mr6$1@mhadf.production.compuserve.com>, Stephen Kay
  789. <70714.1356@CompuServe.COM> wrote:
  790.  
  791. > Is there an easy way to get the outline of a pict so you can copy 
  792. > the pict through it as a mask onto an already drawn background? I've
  793. > been trying to use CalcMask, but it I'm having trouble with grey 
  794. > scales. i.e. I want the outline of any pixel that's non-white.
  795.  
  796. What you could do is CopyBits your image into an old-fashioned 1-bit
  797. grafport (thereby turning all the colors to black-and-white), then use
  798. CalcMask or BitmapToRgn.
  799.  
  800. +++++++++++++++++++++++++++
  801.  
  802. >From tonyn@tiac.net (Tony Nelson)
  803. Date: Mon, 09 Dec 1996 20:31:02 -0500
  804. Organization: <none>
  805.  
  806. In article <58i5mo$mr6$1@mhadf.production.compuserve.com>, Stephen Kay
  807. <70714.1356@CompuServe.COM> wrote:
  808.  
  809. > Is there an easy way to get the outline of a pict so you can copy 
  810. > the pict through it as a mask onto an already drawn background? I've
  811. > been trying to use CalcMask, but it I'm having trouble with grey 
  812. > scales. i.e. I want the outline of any pixel that's non-white.
  813.  
  814. >From NIM _Imaging with QuickDraw_, p.3-116:
  815.  
  816. > When you use CopyBits on a computer running Color QuickDraw, you can also
  817. > specify one of the following transfer modes in the mode parameter:
  818. >  ...
  819. >     transparent = 36;       {replace the destination pixel with the }
  820. >                             { source pixel if the source pixel isn't }
  821. >                             { equal to the background color}
  822.  
  823. If the pict was made with a transparent _CopyBits, you're done.  If not,
  824. draw it into a GWorld and copy the result to the destination.  (Do it in
  825. bands if there isn't enough memory.)
  826. ____________________________________________________________________
  827. TonyN.:'                                              tonyn@tiac.net
  828.       '
  829.  
  830. ---------------------------
  831.  
  832. >From mschwa4259@aol.com
  833. Subject: FSpCreate Questions.
  834. Date: 9 Dec 1996 00:23:24 GMT
  835. Organization: AOL http://www.aol.com
  836.  
  837. Hey Folks,
  838.  
  839. I previously posted about StandardPutFile and creating without calling it.
  840. I guess I was vague about what I needed to know.  Basically, I wanted to
  841. know what I had to do in order call FSpCreate(), without having a value in
  842. the systemScript field.  If I call FSMakeFSSpec() with the VolRef and
  843. DirID for the Folder I want; but what do I put in the filename section. 
  844. nil??  Then what do I do to create the file with FSpCreate.  If the spec
  845. it returns will work, and my creator ad types. What goes in the ScriptCode
  846. field,  smSystemScript,  What will this name the file.  After this can I
  847. just call FSOpenDF() with this FSSpec And get the correct refnum. I guess
  848. I'm just not clear on what exactly a file spec contains.  Or what's needed
  849. exactly to create a file.  
  850.  
  851. Thanks,
  852.  
  853. Matt
  854.  
  855.  
  856.  
  857. +++++++++++++++++++++++++++
  858.  
  859. >From stian@mail.utexas.edu (Stian Oksavik)
  860. Date: 9 Dec 1996 10:53:43 GMT
  861. Organization: University of Texas at Austin
  862.  
  863. In article <19961209002300.TAA25170@ladder01.news.aol.com>,
  864. mschwa4259@aol.com wrote:
  865.  
  866.  > Hey Folks,
  867.  > 
  868.  > I previously posted about StandardPutFile and creating without calling it.
  869.  > I guess I was vague about what I needed to know.  Basically, I wanted to
  870.  > know what I had to do in order call FSpCreate(), without having a value in
  871.  > the systemScript field.  If I call FSMakeFSSpec() with the VolRef and
  872.  > DirID for the Folder I want; but what do I put in the filename section. 
  873.  > nil??
  874.  
  875. Nope, you put the name of your scratch file. For instance
  876. "\pMyApp.scratch". Since this is one thing the user should never see, I
  877. think you can safely hard code it into your code...although there's
  878. nothing wrong with storing it in a resource.
  879.  
  880.  > Then what do I do to create the file with FSpCreate.  If the spec
  881.  > it returns will work, and my creator ad types.
  882.  
  883. Yes.
  884.  > What goes in the ScriptCode
  885.  > field,  smSystemScript
  886.  
  887. I would think the current script system. I think you can also just put
  888. nil, AFAIK this should get you the Roman script system, which is always
  889. present.
  890.  
  891.  > What will this name the file.  After this can I
  892.  > just call FSOpenDF() with this FSSpec And get the correct refnum. I guess
  893.  > I'm just not clear on what exactly a file spec contains.  Or what's needed
  894.  > exactly to create a file.
  895.  
  896. Pretty much what you wrote above. Just supply a filename and you should be OK.
  897.  
  898. Hope this helps,
  899. -Stian
  900.  
  901. +++++++++++++++++++++++++++
  902.  
  903. >From jude@smellycat.com (Jude Giampaolo)
  904. Date: Sun, 08 Dec 1996 20:27:22 -0500
  905. Organization: CyberDrugs
  906.  
  907. In article <19961209002300.TAA25170@ladder01.news.aol.com>,
  908. mschwa4259@aol.com wrote:
  909.  
  910. > I previously posted about StandardPutFile and creating without calling it.
  911. > I guess I was vague about what I needed to know.  Basically, I wanted to
  912. > know what I had to do in order call FSpCreate(), without having a value in
  913. > the systemScript field.  If I call FSMakeFSSpec() with the VolRef and
  914. > DirID for the Folder I want; but what do I put in the filename section. 
  915. > nil??  Then what do I do to create the file with FSpCreate.  If the spec
  916. > it returns will work, and my creator ad types. What goes in the ScriptCode
  917. > field,  smSystemScript,  What will this name the file.  After this can I
  918. > just call FSOpenDF() with this FSSpec And get the correct refnum. I guess
  919. > I'm just not clear on what exactly a file spec contains.  Or what's needed
  920. > exactly to create a file.  
  921.  
  922.  
  923. Let me see if I can walk you though it.... (Sorry about the pascal, but my
  924. C is really embarrasingly sloppy)
  925.  
  926. If I remember correctly you were looking to make a temporary file so...
  927.  
  928. {First we call FindFolder to get the volume reference number and the
  929. directory ID of the temporary items folder:}
  930.  
  931. myErr:=FindFolder(kOnSystemDisk,kTemporaryFolderType,true,theVRefNum,theDirID);
  932.  
  933. {Now we can create the file spec:}
  934.  
  935. myErr:=FSMakeFSSpec(theVRefNum,theDirID,theFileSpec);
  936.  
  937. {After the file spec is created we then can create the file.
  938. theCreatorCode is generally the same as the creator type for the
  939. application and theFileType can be pretty much anything you want or need
  940. it to be. ('TEXT" for a text file, etc.):}
  941.  
  942. myErr:=FSpCreate(theFileSpec,theCreatorCode,theFileType,smSystemScript);
  943.  
  944. {Once the file is created it can be opened:}
  945.  
  946. myErr:=FSpOpenDF(theFileSpec,fsRdWrPerm,theFileRefNum);
  947.  
  948. {Do stuff with theFileSpec here....}
  949.  
  950. {Make sure to close the file when you are finished with it:}
  951.  
  952. myErr:=FSClose(theFileRefNum);
  953.  
  954. {And since it is a temp file it should be deleted:}
  955.  
  956. myErr:=FSpDelete(theFileSpec);
  957.  
  958. I hope that helps.....
  959.  
  960. -- 
  961. Jude Charles Giampaolo        'I was lined up for glory, but the
  962. jcg161@psu.edu                    tickets sold out in advance'
  963. jude@smellycat.com      http://prozac.cwru.edu/jude/JudeHome.html
  964.  
  965. +++++++++++++++++++++++++++
  966.  
  967. >From David Gillies <daggilli@vader.brad.ac.uk>
  968. Date: Tue, 10 Dec 1996 14:46:16 +0000
  969. Organization: University of Bradford
  970.  
  971. mschwa4259@aol.com wrote:
  972. > Hey Folks,
  973. > I previously posted about StandardPutFile and creating without calling it.
  974. > I guess I was vague about what I needed to know.  Basically, I wanted to
  975. > know what I had to do in order call FSpCreate(), without having a value in
  976. > the systemScript field.  If I call FSMakeFSSpec() with the VolRef and
  977. > DirID for the Folder I want; but what do I put in the filename section.
  978. > nil??  Then what do I do to create the file with FSpCreate.  If the spec
  979. > it returns will work, and my creator ad types. What goes in the ScriptCode
  980. > field,  smSystemScript,  What will this name the file.  After this can I
  981. > just call FSOpenDF() with this FSSpec And get the correct refnum. I guess
  982. > I'm just not clear on what exactly a file spec contains.  Or what's needed
  983. > exactly to create a file.
  984. > Thanks,
  985. > Matt
  986.  
  987. typedef struct FSSpec
  988.   {
  989.   short     vRefNum;
  990.   long      parID;
  991.   Str63     name;
  992.   }FSSpec;
  993.  
  994. typedef FSSpec   *FSSpecPtr,*FSSpecArrayPtr,**FSSpecHandle; 
  995.  
  996. Say you want to create the file "MyFile", in the directory "Some Dir"
  997. which has the ID 12054 in the disk "My Disk" which has the volume
  998. reference number -1, then call
  999.  
  1000. short      refNum=-1;
  1001. long       dirID=12054;
  1002. Str63      name="\pMyFile";
  1003. FSSpec     newFSS;
  1004. OSErr      fileErr;
  1005. OSType     creatorCode,fileType;
  1006.  
  1007. fileErr=FSMakeFSSpec(refNum,dirID,name,&newFSS);
  1008.  
  1009. if(fileErr==fnfErr) // file doesn't exist - make it
  1010.   {
  1011.   // can't remember if I've got the creator and type the right way round
  1012.   fileErr=FSpCreate(&newFSS,creatorCode,fileType,smSystemScript)
  1013.   }
  1014. else
  1015.   {
  1016.   switch(fileErr)
  1017.     {
  1018.     case noErr:
  1019.       // we're ok - carry on;
  1020.     break;
  1021.  
  1022.     case etc....
  1023.       // handle errors
  1024.     }
  1025.   }
  1026. -- 
  1027. ______________________________________________________________________
  1028. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  1029.       University of Bradford, Bradford, West Yorkshire, England
  1030. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  1031.  
  1032. ---------------------------
  1033.  
  1034. >From email@domain.com (Your Name)
  1035. Subject: FatComponent for a QT DataHandler
  1036. Date: Wed, 04 Dec 1996 20:56:26 -0700
  1037. Organization: Oracle Corporation. Redwood Shores, CA
  1038.  
  1039. I am trying to get a FatComponent (QT Data Handler) running on the Mac. 
  1040.  
  1041. I have built the Code Warrior Example 'FatComponent' and it works. 
  1042.  
  1043. But, my component does not Open at all with the OpenComponent call.  It
  1044. seems that Registration went OK.   Since there are no error codes from
  1045. OpenComponent I have no idea why my component is being opened, the
  1046. component;'s Open code is not even called.
  1047.  
  1048. Are there any Component writers out there? 
  1049.  
  1050. SaS -- Oracle Video Server
  1051.  
  1052. +++++++++++++++++++++++++++
  1053.  
  1054. >From sschmukl@us.oracle.com (Stuart Schmukler)
  1055. Date: Wed, 04 Dec 1996 21:20:42 -0700
  1056. Organization: Oracle
  1057.  
  1058. I forgot to set my address.
  1059.  
  1060. In article <email-0412962056260001@pkiddle-mac.us.oracle.com>,
  1061. email@domain.com (Your Name) wrote:
  1062.  
  1063. > I am trying to get a FatComponent (QT Data Handler) running on the Mac. 
  1064. >  
  1065. > I have built the Code Warrior Example 'FatComponent' and it works. 
  1066. >  
  1067. > But, my component does not Open at all with the OpenComponent call.  It
  1068. > seems that Registration went OK.   Since there are no error codes from
  1069. > OpenComponent I have no idea why my component is being opened, the
  1070. > component;'s Open code is not even called.
  1071. >  
  1072. > Are there any Component writers out there? 
  1073. >  
  1074. > SaS -- Oracle Video Server
  1075.  
  1076. +++++++++++++++++++++++++++
  1077.  
  1078. >From mcookson@ricochet.net (Mark Cookson)
  1079. Date: Sat, 07 Dec 1996 12:19:04 -0800
  1080. Organization: (none)
  1081.  
  1082. > > I am trying to get a FatComponent (QT Data Handler) running on the Mac. 
  1083. > >  
  1084. > > I have built the Code Warrior Example 'FatComponent' and it works. 
  1085. > >  
  1086. > > But, my component does not Open at all with the OpenComponent call.  It
  1087. > > seems that Registration went OK.   Since there are no error codes from
  1088. > > OpenComponent I have no idea why my component is being opened, the
  1089. > > component;'s Open code is not even called.
  1090. > >  
  1091. > > Are there any Component writers out there? 
  1092. > >  
  1093. > > SaS -- Oracle Video Server
  1094.  
  1095. Your component has to be opened before it can be registered.  When
  1096. registering (like at boot time) your dispatch function first calls the open
  1097. function, then calls the register function, and then the close function, if
  1098. your open function never gets called then either your dispatch function is
  1099. messed up or something really strange is happening.
  1100.  
  1101. Have you put a DebugStr as the first line of the open function?
  1102.  
  1103. If you use the thing command in MacsBug, does your component show up in the
  1104. list?
  1105.  
  1106. Mark
  1107.  
  1108. +++++++++++++++++++++++++++
  1109.  
  1110. >From sschmukl@us.oracle.com (Stuart Schmukler)
  1111. Date: Wed, 11 Dec 1996 12:57:24 -0700
  1112. Organization: Oracle New Media
  1113.  
  1114. In article <mcookson-ya023180000712961219040001@news.ricochet.net>,
  1115. mcookson@ricochet.net (Mark Cookson) wrote:
  1116.  
  1117. > > > I am trying to get a FatComponent (QT Data Handler) running on the Mac. 
  1118. > > >  
  1119. > > > I have built the Code Warrior Example 'FatComponent' and it works. 
  1120. > > >  
  1121. > > > But, my component does not Open at all with the OpenComponent call.  It
  1122. > > > seems that Registration went OK.   Since there are no error codes from
  1123. > > > OpenComponent I have no idea why my component is being opened, the
  1124. > > > component;'s Open code is not even called.
  1125. > > >  
  1126. > > > Are there any Component writers out there? 
  1127. > > >  
  1128. > > > SaS -- Oracle Video Server
  1129. > Your component has to be opened before it can be registered. 
  1130. ...
  1131.    I am not sure this is true.  It sounds like a chicken and an egg
  1132. problem.  I have seen Components
  1133. that register other components at boot time.  Some one has to register the
  1134. component before it can be called.
  1135.  
  1136. > Have you put a DebugStr as the first line of the open function?
  1137.    Yes. 
  1138.  
  1139. > If you use the thing command in MacsBug, does your component show up in the
  1140. > list?
  1141.    If I use the PPC component I get:
  1142.   Cnt tRef#  ThingName      Type SubT Manu Flags    EntryPnt FileName Prnt
  1143. LocalA5  RefCon
  1144. ...
  1145.    #0 0200FC DataH test.    dhlr alis orcl 00000000 50FF8001 0000294C     
  1146. 00000000 00000000
  1147.  
  1148.  
  1149. The EntryPoint is from EBBE's deamon seed.  So, I hacked my thing resource
  1150. to point only at the 69K version of my component and it registers and runs
  1151. fine.  It seems that I am making some mistake in the PPC  coding.   
  1152.   Cnt tRef#  ThingName      Type SubT Manu Flags    EntryPnt FileName Prnt
  1153. LocalA5  RefCon
  1154. ...
  1155.    #0 0200FE DataH test.    dhlr alis orcl 00000000 007ED510 00002950     
  1156. 00000000 00000000
  1157.  
  1158. One short reference in  A_Fragment_of_your_Imagination leads me to believe
  1159. that the CFM is having trouble with the RoutineDescriptors in the code or
  1160. the UPPs.  I removed all of the RoutineDescriptors
  1161. and got closer, but the PPC code is still not loading.
  1162.  
  1163. > Mark
  1164.  
  1165. Thank-you for your support.
  1166.  
  1167. SaS -- Oracle Video Server
  1168.  
  1169. ---------------------------
  1170.  
  1171. >From h943318b@eds.ecip.nagoya-u.ac.jp (Kaneko Tetsuya )
  1172. Subject: Get selected files on Finder.
  1173. Date: 1 Dec 1996 05:59:13 GMT
  1174. Organization: Education Center for Information Processing, Nagoya Univ.
  1175.  
  1176. I'm programming on MW C/C++.
  1177.  
  1178. I want to get files or folders selected (and highlighted) on Finder
  1179.  in INIT sources.
  1180.  
  1181. Can I do it?
  1182. Please tell me how to do.
  1183.  
  1184. +++++++++++++++++++++++++++
  1185.  
  1186. >From test@admin
  1187. Date: Mon,  2 Dec 96 12:08:32 +0000
  1188. Organization: (none)
  1189.  
  1190. Check out "Scripting the Finder" by Greg Anderson in develop #20.
  1191. HTH
  1192.  
  1193.  
  1194.  
  1195. On Sun, Dec 1, 1996,5:59 AM Kaneko Tetsuya wrote:
  1196. >I'm programming on MW C/C++.
  1197. >
  1198. >I want to get files or folders selected (and highlighted) on Finder
  1199. > in INIT sources.
  1200. >
  1201. >Can I do it?
  1202. >Please tell me how to do.
  1203. >
  1204. End of excerpt from Kaneko Tetsuya.
  1205.  
  1206.  
  1207.  
  1208.  
  1209. +++++++++++++++++++++++++++
  1210.  
  1211. >From David Gillies <daggilli@vader.brad.ac.uk>
  1212. Date: Wed, 04 Dec 1996 14:20:46 +0000
  1213. Organization: University of Bradford
  1214.  
  1215. test@admin wrote:
  1216. > Check out "Scripting the Finder" by Greg Anderson in develop #20.
  1217. > HTH
  1218. > On Sun, Dec 1, 1996,5:59 AM Kaneko Tetsuya wrote:
  1219. > >I'm programming on MW C/C++.
  1220. > >
  1221. > >I want to get files or folders selected (and highlighted) on Finder
  1222. > > in INIT sources.
  1223. > >
  1224. > >Can I do it?
  1225. > >Please tell me how to do.
  1226. > >
  1227. > End of excerpt from Kaneko Tetsuya.
  1228.  
  1229. A bit more detail:
  1230.  
  1231. Make a Get Data event passing 'the selection' in as the direct object.
  1232. Returns an object specifier which you can pull apart to find the
  1233. selected objects.
  1234.  
  1235. Very easy really (afternoon's work at most if you read Greg Anderson's
  1236. article - which IMHO is one of the best develop ever published).
  1237.  
  1238. If you are not using System 7.5 or later, then forget it. I do know
  1239. how to do it in pre 7.5 systems, but it is a totally unsanctioned
  1240. and evil hack which I fear to share with the world.
  1241. -- 
  1242. ______________________________________________________________________
  1243. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  1244.       University of Bradford, Bradford, West Yorkshire, England
  1245. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  1246.  
  1247. +++++++++++++++++++++++++++
  1248.  
  1249. >From Olivier Beaudoux <beaudoux@lra.eseo.fr>
  1250. Date: Fri, 06 Dec 1996 14:42:22 -0800
  1251. Organization: Universite d'Angers, France.
  1252.  
  1253. Hi,
  1254.  
  1255. You can use the copy/paste feature (scrap manager) with jGNE (a patch to
  1256. the MacOS GetNextEvent function).
  1257.  
  1258. 1. Get an event with jGNE that tell you about a mouse down or/and a key
  1259. down.
  1260. 2. Save the content of the scrap area (in an other buffer).
  1261. 3. Generate a copy to see if scrap is empty or not. If not, you've get
  1262. the name of the interest file/folder. If it's empty, generate a 'return'
  1263. keydown event with the PostEvent function; redo the copy and it's now
  1264. ok.
  1265. 4. Restitute the saved scrap buffer to the real one.
  1266.  
  1267. Remark : there is surely a best way to do this...
  1268.  
  1269. Bod
  1270.  
  1271. +++++++++++++++++++++++++++
  1272.  
  1273. >From David Gillies <daggilli@vader.brad.ac.uk>
  1274. Date: Mon, 09 Dec 1996 16:30:24 +0000
  1275. Organization: University of Bradford
  1276.  
  1277. Olivier Beaudoux wrote:
  1278. > Hi,
  1279. > You can use the copy/paste feature (scrap manager) with jGNE (a patch to
  1280. > the MacOS GetNextEvent function).
  1281. > 1. Get an event with jGNE that tell you about a mouse down or/and a key
  1282. > down.
  1283. > 2. Save the content of the scrap area (in an other buffer).
  1284. > 3. Generate a copy to see if scrap is empty or not. If not, you've get
  1285. > the name of the interest file/folder. If it's empty, generate a 'return'
  1286. > keydown event with the PostEvent function; redo the copy and it's now
  1287. > ok.
  1288. > 4. Restitute the saved scrap buffer to the real one.
  1289. > Remark : there is surely a best way to do this...
  1290. You're darn tootin' there is! I'm not even sure if this would work.
  1291. There is no supported way to get the Finder selection in any system
  1292. version prior to 7.5 (there is a sneaky, underhand method of vast
  1293. and sinister skankiness in earlier versions - it is abstruse in the
  1294. extreme).
  1295.  
  1296. The way to do it 7.5 is send a Get Selection apple event to the Finder.
  1297. Read Greg Anderson's article in develop 21.
  1298.  
  1299. -- 
  1300. ______________________________________________________________________
  1301. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  1302.       University of Bradford, Bradford, West Yorkshire, England
  1303. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  1304.  
  1305. +++++++++++++++++++++++++++
  1306.  
  1307. >From David Gillies <daggilli@vader.brad.ac.uk>
  1308. Date: Tue, 10 Dec 1996 14:51:53 +0000
  1309. Organization: University of Bradford
  1310.  
  1311. David Gillies wrote:
  1312. [stuff on getting the Finder selection]
  1313. > The way to do it 7.5 is send a Get Selection apple event to the Finder.
  1314. > Read Greg Anderson's article in develop 21.
  1315. Sorry - that should read develop 20
  1316. -- 
  1317. ______________________________________________________________________
  1318. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  1319.       University of Bradford, Bradford, West Yorkshire, England
  1320. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  1321.  
  1322. +++++++++++++++++++++++++++
  1323.  
  1324. >From h943318b@eds.ecip.nagoya-u.ac.jp (Kaneko Tetsuya )
  1325. Date: 12 Dec 1996 10:55:04 GMT
  1326. Organization: Education Center for Information Processing, Nagoya Univ.
  1327.  
  1328.  
  1329. Thank you, evetybody followed my question.
  1330.  
  1331. I understand that I need research Finder Scripting.
  1332.  
  1333. Tetsuya Kaneko
  1334.  
  1335. ---------------------------
  1336.  
  1337. >From drelder@lisp.com.au (Matthew Elder)
  1338. Subject: Help with GetKeys();
  1339. Date: Mon, 16 Dec 1996 01:29:55 +1000
  1340. Organization: LISP
  1341.  
  1342. My name is Matthew Elder and I am fairly new at programming for the mac. I
  1343. am currrently trying to use the GetKeys() function but am having some
  1344. problems. I am wanting the computer to read the keymap. I then ask if a
  1345. particular key is down, in this case the up arrow (I think). It is not
  1346. acknowledging the key press. Can somebody show me where I am going wrong.
  1347. Thankyou.
  1348.  
  1349.  
  1350.  
  1351. void Events(void)
  1352. short HorDistance = 0;
  1353. short VerDistance = 0;
  1354. void DrawField(long HorDistance,long VerDistance);
  1355.  
  1356.    KeyMap myKeyMap;
  1357.  
  1358.    while (!Button())
  1359.    {
  1360.       
  1361.       GetKeys(myKeyMap);
  1362.       
  1363.       if (myKeyMap[125])
  1364.       {
  1365.          VerDistance = VerDistance - 5;
  1366.          }
  1367.  
  1368.    DrawField( HorDistance, VerDistance);  
  1369.  
  1370. }
  1371. }
  1372.  
  1373. +++++++++++++++++++++++++++
  1374.  
  1375. >From smfr@santafe.edu (Simon Fraser)
  1376. Date: Sun, 15 Dec 1996 02:08:15 -0700
  1377. Organization: Santa Fe Institute
  1378.  
  1379. In article <drelder-1612960129550001@lisp-ip75.lisp.com.au>,
  1380. drelder@lisp.com.au (Matthew Elder) wrote:
  1381.  
  1382. >My name is Matthew Elder and I am fairly new at programming for the mac. I
  1383. >am currrently trying to use the GetKeys() function but am having some
  1384. >problems. I am wanting the computer to read the keymap. I then ask if a
  1385. >particular key is down, in this case the up arrow (I think). It is not
  1386. >acknowledging the key press. Can somebody show me where I am going wrong.
  1387. >Thankyou.
  1388. >
  1389. [snip]
  1390. >      GetKeys(myKeyMap);
  1391. >      
  1392. >      if (myKeyMap[125])
  1393.  
  1394. KeyMap is now defined as:
  1395.  
  1396. unsigned long KeyMap[4]
  1397.  
  1398. so by checking myKeyMap[125] you are looking at some long in memory
  1399. a loooong way off the end of the Key Map.  ;-)
  1400.  
  1401. You'll need to work out which long contains the key you want,
  1402. and then check the appropriate bit with something like
  1403.  
  1404. if ((myKeyMap[2] & (1 << kArrowKeyByte)) != 0)...
  1405.  
  1406. (I made up those numbers).
  1407.  
  1408. HTH,
  1409. Simon
  1410.  
  1411. +++++++++++++++++++++++++++
  1412.  
  1413. >From matt@colorpar.com (Matt Gieselman)
  1414. Date: Mon, 16 Dec 1996 10:09:30 -0800
  1415. Organization: The Color Partnership
  1416.  
  1417. In article <drelder-1612960129550001@lisp-ip75.lisp.com.au>,
  1418. drelder@lisp.com.au (Matthew Elder) wrote:
  1419.  
  1420. > My name is Matthew Elder and I am fairly new at programming for the mac. I
  1421. > am currrently trying to use the GetKeys() function but am having some
  1422. > problems. I am wanting the computer to read the keymap. I then ask if a
  1423. > particular key is down, in this case the up arrow (I think). It is not
  1424. > acknowledging the key press. Can somebody show me where I am going wrong.
  1425. > Thankyou.
  1426.  
  1427. Matthew,
  1428.  
  1429. Here is a function youc an call with the keycode to see
  1430. if that key is down:
  1431.  
  1432. Boolean 
  1433. KeyIsDown( UInt16 keyVal ) {
  1434.    UInt8 theKeyMap[16];
  1435.  
  1436.    ::GetKeys( (UInt32 *)theKeyMap );
  1437.    
  1438.    return( (theKeyMap[keyVal >> 3] >> (keyVal & 7)) & 1 );
  1439.    
  1440. } // end KeyIsDown
  1441.  
  1442. You could alternatively get the same info from the event
  1443. record if you are going through an event loop.  If you
  1444. have Think Reference or the Inside Mac reference youshould
  1445. be able to get what values respond to what keys.
  1446.  
  1447. For the up arrow you would call as follows:
  1448.  
  1449.      if ( KeyIsDown( 0x7E ) ) {
  1450.          // Do something
  1451.          }
  1452.  
  1453. Hope this helps,
  1454. Matt
  1455.  
  1456. - ------------------------------------------------------------
  1457. Matt Gieselman  
  1458. Software Engineer and Juggler                      
  1459. The Color Partnership
  1460. matt@colorpar.com
  1461. www.colorpar.com
  1462. - -----------------------------------------------------------
  1463.  
  1464. +++++++++++++++++++++++++++
  1465.  
  1466. >From glen_yates@cpqm.NOSPAM.mail.saic.com (Glen Yates)
  1467. Date: Mon, 16 Dec 1996 13:23:02 -0600
  1468. Organization: SAIC
  1469.  
  1470. In article <smfr-1512960208150001@simon.santafe.edu>, smfr@santafe.edu
  1471. (Simon Fraser) wrote:
  1472.  
  1473. > In article <drelder-1612960129550001@lisp-ip75.lisp.com.au>,
  1474. > drelder@lisp.com.au (Matthew Elder) wrote:
  1475. > >My name is Matthew Elder and I am fairly new at programming for the mac. I
  1476. > >am currrently trying to use the GetKeys() function but am having some
  1477. > >problems. I am wanting the computer to read the keymap. I then ask if a
  1478. > >particular key is down, in this case the up arrow (I think). It is not
  1479. > >acknowledging the key press. Can somebody show me where I am going wrong.
  1480. > >Thankyou.
  1481. > >
  1482. > [snip]
  1483. > >      GetKeys(myKeyMap);
  1484. > >      
  1485. > >      if (myKeyMap[125])
  1486. > KeyMap is now defined as:
  1487. > unsigned long KeyMap[4]
  1488. > so by checking myKeyMap[125] you are looking at some long in memory
  1489. > a loooong way off the end of the Key Map.  ;-)
  1490. > You'll need to work out which long contains the key you want,
  1491. > and then check the appropriate bit with something like
  1492. > if ((myKeyMap[2] & (1 << kArrowKeyByte)) != 0)...
  1493. > (I made up those numbers).
  1494.  
  1495. Right, and for the lazy, the real numbers are:
  1496.  
  1497.   myKeyMap[3] in which case the up arrow key is 64.
  1498.  
  1499. Of course you probably want the other arrow keys too, but knowing you
  1500. should be checking myKeyMap[3] you can easily find those values.
  1501.  
  1502. Regards,
  1503. Glen Yates    ---- Remove .NOSPAM from my address to reply ----
  1504.  
  1505. ---------------------------
  1506.  
  1507. >From bhutten@cochran.com (Bill Hutten)
  1508. Subject: How to find dirID of my application?
  1509. Date: Sun, 01 Dec 1996 17:30:43 -0500
  1510. Organization: Cochran Interactive
  1511.  
  1512. OK, I want to create a file or folder in the current directory (the
  1513. directory my application is in)....In order to create a FSSpec I need to
  1514. know the volume reference # and the parent directory ID...I assume I'm just
  1515. being stupid (yeah, for the first time.....) but how the heck do I find
  1516. these, assuming that my application can be moved anywhere (ie, I can't rely
  1517. on folders staying the same....)
  1518.  
  1519.  
  1520. thanks
  1521.  
  1522.  
  1523. - bill
  1524.  
  1525. +++++++++++++++++++++++++++
  1526.  
  1527. >From francois-regis.degott@imag.fr (Fr. Degott)
  1528. Date: 2 Dec 1996 11:40:49 GMT
  1529. Organization: LogiMath - LMC-IMAG - Grenoble
  1530.  
  1531. In article <bhutten-ya023180000112961730430001@news.nstn.ca>,
  1532. bhutten@cochran.com (Bill Hutten) wrote:
  1533.  
  1534. > OK, I want to create a file or folder in the current directory (the
  1535. > directory my application is in)....In order to create a FSSpec I need to
  1536. > know the volume reference # and the parent directory ID...I assume I'm just
  1537. > being stupid (yeah, for the first time.....) but how the heck do I find
  1538. > these, assuming that my application can be moved anywhere (ie, I can't rely
  1539. > on folders staying the same....)
  1540.  
  1541. Hi Bill,
  1542.  
  1543. the answer is in the Process Manager.
  1544.  
  1545. see the routines  GetCurrentProcess(), GetProcessInformation(),
  1546. and the ProcessInfoRec structure.
  1547.  
  1548. HTH
  1549. Fr.
  1550. _____________________________________________________________________________
  1551. Fr. Degott (Francois-Regis.Degott@imag.fr)
  1552. LogiMath, Lab. LMC-IMAG - Grenoble - France
  1553.  
  1554. +++++++++++++++++++++++++++
  1555.  
  1556. >From j-norstad@nwu.edu (John Norstad)
  1557. Date: Mon, 02 Dec 1996 12:30:32 -0600
  1558. Organization: Northwestern University
  1559.  
  1560. In article <bhutten-ya023180000112961730430001@news.nstn.ca>,
  1561. bhutten@cochran.com (Bill Hutten) wrote:
  1562.  
  1563. > OK, I want to create a file or folder in the current directory (the
  1564. > directory my application is in)....In order to create a FSSpec I need to
  1565. > know the volume reference # and the parent directory ID...I assume I'm just
  1566. > being stupid (yeah, for the first time.....) but how the heck do I find
  1567. > these, assuming that my application can be moved anywhere (ie, I can't rely
  1568. > on folders staying the same....)
  1569.  
  1570. Use PBGetFCBInfo:
  1571.  
  1572.     FCBPBRec pBlock;
  1573.     OSErr err;
  1574.  
  1575.     pBlock.ioNamePtr = nil;
  1576.     pBlock.ioVRefNum = 0;
  1577.     pBlock.ioRefNum = LMGetCurApRefNum();
  1578.     pBlock.ioFCBIndx = 0;
  1579.     err = PBGetFCBInfo(&pBlock, false);
  1580.     if (err != noErr) {
  1581.         /* pBlock.ioFCBVRefNum = vol ref num of dir containing app. */
  1582.         /* pBlock.ioFCBParID = dir id of dir containing app. */
  1583.     }
  1584.  
  1585. -- 
  1586. John Norstad
  1587. <mailto:j-norstad@nwu.edu>
  1588. <http://charlotte.acns.nwu.edu/jln/>
  1589.  
  1590. +++++++++++++++++++++++++++
  1591.  
  1592. >From Gideon Greenspan <gdg20@hermes.cam.ac.uk>
  1593. Date: Mon, 2 Dec 1996 18:02:39 +0000
  1594. Organization: University of Cambridge, England
  1595.  
  1596. > OK, I want to create a file or folder in the current directory (the
  1597. > directory my application is in)....In order to create a FSSpec I need to
  1598. > know the volume reference # and the parent directory ID...I assume I'm just
  1599. > being stupid (yeah, for the first time.....) but how the heck do I find
  1600. > these, assuming that my application can be moved anywhere (ie, I can't rely
  1601. > on folders staying the same....)
  1602.  
  1603. I'm not 100% sure about this one, but I've done some similar things.
  1604.  
  1605. Use the Process Manager to get Process Information on the current process.
  1606. Within this data structure there should be the FSSpec of where the app is
  1607. held on disk.
  1608.  
  1609. Gideon Greenspan
  1610.  
  1611.  
  1612. +++++++++++++++++++++++++++
  1613.  
  1614. >From bilewicz@helf4.physik.fu-berlin.de (Roger Bilewicz)
  1615. Date: 3 Dec 96 13:23:42 GMT
  1616. Organization: Freie Universitaet Berlin
  1617.  
  1618. bhutten@cochran.com (Bill Hutten) writes:
  1619.  
  1620. >OK, I want to create a file or folder in the current directory (the
  1621. >directory my application is in)....In order to create a FSSpec I need to
  1622. >know the volume reference # and the parent directory ID...I assume I'm just
  1623. >being stupid (yeah, for the first time.....) but how the heck do I find
  1624. >these, assuming that my application can be moved anywhere (ie, I can't rely
  1625. >on folders staying the same....)
  1626.  
  1627. Bill,
  1628. other suggestions which have already been made may work as well... here
  1629. comes mine:
  1630.  1. take the handle to any of your resources (when initializing your
  1631.     program, you will probably get a menu handle, for ex.) and call
  1632.     HomeResFile (thisHandle) . You'll get the refNum of your program's
  1633.     resource file. If you still didn't open other files, you could
  1634.     likewise get CurResFile. 
  1635.  2. Take this refNum and get the FSSpec - if I'm not completely wrong,
  1636.     there is a function in MoreFiles which does this. (Sorry, I cannot 
  1637.     check for the name right here) 
  1638.  
  1639. May it help,
  1640.  
  1641. Roger
  1642.  
  1643.  
  1644. +++++++++++++++++++++++++++
  1645.  
  1646. >From David Gillies <daggilli@vader.brad.ac.uk>
  1647. Date: Wed, 04 Dec 1996 14:42:02 +0000
  1648. Organization: University of Bradford
  1649.  
  1650. John Norstad wrote:
  1651. > In article <bhutten-ya023180000112961730430001@news.nstn.ca>,
  1652. > bhutten@cochran.com (Bill Hutten) wrote:
  1653. > > OK, I want to create a file or folder in the current directory (the
  1654. > > directory my application is in)....In order to create a FSSpec I need to
  1655. > > know the volume reference # and the parent directory ID...I assume I'm just
  1656. > > being stupid (yeah, for the first time.....) but how the heck do I find
  1657. > > these, assuming that my application can be moved anywhere (ie, I can't rely
  1658. > > on folders staying the same....)
  1659. > Use PBGetFCBInfo:
  1660. >     FCBPBRec pBlock;
  1661. >     OSErr err;
  1662. >     pBlock.ioNamePtr = nil;
  1663. >     pBlock.ioVRefNum = 0;
  1664. >     pBlock.ioRefNum = LMGetCurApRefNum();
  1665. >     pBlock.ioFCBIndx = 0;
  1666. >     err = PBGetFCBInfo(&pBlock, false);
  1667. >     if (err != noErr) {
  1668. >         /* pBlock.ioFCBVRefNum = vol ref num of dir containing app. */
  1669. >         /* pBlock.ioFCBParID = dir id of dir containing app. */
  1670. >     }
  1671. > --
  1672. > John Norstad
  1673. > <mailto:j-norstad@nwu.edu>
  1674. > <http://charlotte.acns.nwu.edu/jln/>
  1675. This will work, but it's talking to low memory globals, which the
  1676. Apple Thought Police say is bad karma. I use GetCurrentProcess()
  1677. followed by GetProcessInformation() to do this trick.
  1678.  
  1679. something like (off the top of my head)
  1680.  
  1681. ProcessSerialNumber     psn;
  1682. ProcessInfoRec          pInfo;
  1683. FSSpec                  myAppSpec;
  1684.  
  1685. GetCurrentProcess(&psn);
  1686.  
  1687. // initialise the fields - length of record, pointer to myAppSpec etc.
  1688.  
  1689. GetProcessInformation(&psn,&pInfo);
  1690.  
  1691. Check out IM VI or new IM: Processes
  1692. -- 
  1693. ______________________________________________________________________
  1694. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  1695.       University of Bradford, Bradford, West Yorkshire, England
  1696. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  1697.  
  1698. +++++++++++++++++++++++++++
  1699.  
  1700. >From bhamlin@zocalo.net (Brian Hamlin)
  1701. Date: 9 Dec 1996 21:50:29 GMT
  1702. Organization: Noesis Software Construction
  1703.  
  1704. In article <32A58DBA.73E5@vader.brad.ac.uk>, David Gillies
  1705. <daggilli@vader.brad.ac.uk> wrote:
  1706.  
  1707.   stuff about GetProcessInfo and not talking to LoMem
  1708.  
  1709.  
  1710. CurrentAppName will always be around (and probably 99% of those others as well)
  1711.  
  1712. Try this:
  1713.  
  1714.    FSSpec         tSpec;
  1715.    Str63       fldrStr, dName;
  1716.    Str32       volName;
  1717.    CInfoPBRec     cipbr; // I use this 'cause I always get them mixed up
  1718.    DirInfo        *dPB = (DirInfo*)&cipbr;
  1719.    short       curVRefNum;
  1720.    short       modFileCnt, cnt, foundCnt;
  1721.    unsigned long  tType;
  1722.    long        modFldrID;
  1723.    Size        siz;
  1724.    OSErr       err;
  1725.  
  1726.    // Find a list of files to be displayed
  1727.  
  1728.    // Get Info on our App Folder
  1729.    dPB->ioCompletion = 0;
  1730.    dPB->ioNamePtr = dName;
  1731.    dPB->ioVRefNum = 0;
  1732.    dPB->ioFDirIndex = -1;
  1733.    dPB->ioDrDirID = 0;
  1734.    err = PBGetCatInfo( (CInfoPBPtr)dPB, false);
  1735.    if ( err != noErr) {
  1736.       ErrAlert( err, "\pfailed to find App's Folder");
  1737.       return err;
  1738.    }
  1739.  
  1740.    // Get our vRefNum by making an FSSpec to our app...
  1741.    err = FSMakeFSSpec( 0, dPB->ioDrDirID, LMGetCurApName(), &tSpec);
  1742.    curVRefNum = tSpec.vRefNum;
  1743.  
  1744.    modFldrID = dPB->ioDrDirID;
  1745.    modFileCnt = dPB->ioDrNmFls;
  1746.  
  1747.    // Allocate global File List
  1748.    //  start out with space for a few 'Specs
  1749.    //  helps avoid handle in the heap with no room to grow
  1750.    sFileListH = (SDispFilesH)NewHandle( sizeof(SDispFiles)*6);
  1751.    if ( sFileListH == 0) {
  1752.       err=MemError();
  1753.       ErrAlert( err, "\pAllocation problem while loading Files");
  1754.       return err;
  1755.    }
  1756.  
  1757.    // Read the contents of our Folder
  1758.    for ( foundCnt=0,cnt=1; cnt<=modFileCnt; cnt++) {
  1759.       dPB->ioDrDirID = modFldrID;
  1760.       dPB->ioFDirIndex = cnt;
  1761.       if ( (err=PBGetCatInfo((CInfoPBPtr)dPB,false)) != noErr)
  1762.          break;                                 // bail if we fail, else
  1763.                                              // check file type
  1764.       tType = ((HFileInfo*)dPB)->ioFlFndrInfo.fdType;
  1765.       if ( tType == 'PICT')  // or something...
  1766.          foundCnt++;
  1767.       else
  1768.          continue;
  1769.       
  1770.       // Make FSSpec
  1771.       err = FSMakeFSSpec( curVRefNum, modFldrID, dPB->ioNamePtr, &tSpec);
  1772.       if ( err != noErr) break; // unlikely error, bail 
  1773.  
  1774.       siz = GetHandleSize((Handle)sFileListH);
  1775.       if ( siz < foundCnt*sizeof(SDispFiles)) {
  1776.          SetHandleSize( (Handle)sFileListH, (foundCnt+4)*sizeof(SDispFiles));
  1777.          // allocate in chunks to speed things up a little...
  1778.          if ( (err=MemError()) != noErr) {
  1779.             ErrAlert( err, "\pAllocation problem while loading Files");
  1780.             break;
  1781.          }
  1782.       }
  1783.       //HLock( (Handle)sFileListH);  
  1784.       // no need to Lock, BlockMove/assign are safe
  1785.       
  1786.       // Store the File Data
  1787.       BlockMoveData( &tSpec, &((*sFileListH)[ foundCnt-1].dSpec), 
  1788.                       sizeof(FSSpec));
  1789.       (*sFileListH)[ foundCnt-1].dType = tType;
  1790.       (*sFileListH)[ foundCnt-1].dDataSize = cipbr.hFileInfo.ioFlLgLen;
  1791.    }
  1792.    
  1793.    if ( foundCnt == 0) {
  1794.       err = (-1);
  1795.       ErrAlert( err, "\pNo Files found to Display!");
  1796.       return err;
  1797.    }
  1798.    sFilesCnt = foundCnt;
  1799.    sCurFile = 0;
  1800.    
  1801.    return noErr;
  1802. }
  1803.  
  1804. -- 
  1805. Brian M Hamlin                        bhamlin@screenlight.com
  1806. NSC Software Construction                      (510) 271-7971
  1807.  
  1808. +++++++++++++++++++++++++++
  1809.  
  1810. >From Binky the Wonderwhorse <binky@mmcorp.com>
  1811. Date: 12 Dec 1996 17:28:53 GMT
  1812. Organization: Total Jihad, Inc
  1813.  
  1814. lo,
  1815.  
  1816. the following function expects a ptr to an already allocated FSSpec
  1817. structure.  when it returns it fills out the FSSpec with data that points
  1818. ot your application.  this gives your application name and the disk ID
  1819. that its running on and the id of the directory its running in.
  1820.  
  1821. //    -------------------------------------------- OurProcessInfo
  1822. OSErr
  1823. OurProcessInfo(FSSpec    *theFS)
  1824. {
  1825.     OSErr                    iErr = noErr;
  1826.     ProcessSerialNumber        processNumber;
  1827.     ProcessInfoRec            processInfo;
  1828.     
  1829.     iErr = GetCurrentProcess(&processNumber);
  1830.     if (iErr)
  1831.         goto bail;
  1832.     
  1833.     processInfo.processInfoLength = sizeof(ProcessInfoRec);
  1834.     processInfo.processName = NULL;
  1835.     processInfo.processAppSpec = theFS;
  1836.     
  1837.     iErr = GetProcessInformation(&processNumber, &processInfo);
  1838.     
  1839. bail:
  1840.     return iErr;
  1841. }
  1842.  
  1843.  
  1844. ===========================================================
  1845. Binky the Wonderwhorse
  1846. Macintosh Software Engineer, Unix SysAdmin, Webmaster, Spod
  1847. Multimedia Corporation, London
  1848. mail: binky@mmcorp.com
  1849. WWW : http://www.mmcorp.com/~binky
  1850. Cam : http://www.mmcorp.com/~binky/webcamtoo/
  1851. ===========================================================
  1852.  
  1853. ---------------------------
  1854.  
  1855. >From Paulin <st93eft3@dunx1.ocs.drexel.edu>
  1856. Subject: How to get one file at a time in a Mac directory
  1857. Date: 4 Dec 1996 08:14:43 GMT
  1858. Organization: SP extreme
  1859.  
  1860. I am at a lost so I hope someone here can assist me.  Here is what I am
  1861. trying to do.  I set up a while loop.  I locate the volume reference
  1862. number and the directory ID.  I go into that directory and I plan on
  1863. loading one file at a time.  In my loop I load the file, get some needed
  1864. info from it, check the info, then move/delete the file if the info is
  1865. wrong.  
  1866.  
  1867. So here is my question.  How to I load one file at a time in my loop.  Is
  1868. there some easy way to do it just by incramenting something in the
  1869. Paramblock of the Director ID, or something.  Please help.  This has been
  1870. killing me for the past 3 weeks.  I can't seem to figure it out and the
  1871. Inside Macintosh books don't seem to be helping.  If you can give info as
  1872. well as some example or a place to read up on it, I am all ears.  Thanks
  1873. to anyone that can help. 
  1874.  
  1875. And if you can please send me email directly.  I don't get to the news
  1876. group to oftent.  Thanks
  1877.  
  1878. steve
  1879.  
  1880. st93eft3@dunx1.ocs.drexel.edu
  1881. ____________________________________________________________
  1882.                                                           Steve Paulin                        
  1883.         
  1884.                                                            SP extreme
  1885.  
  1886.                                   SPextreme@newtower1-014.resnet.drexel.edu
  1887.                                              http://144.118.247.241/
  1888.  
  1889. +++++++++++++++++++++++++++
  1890.  
  1891. >From refiegle@mail.delcoelect.com (Richard E. Fiegle)
  1892. Date: Fri, 06 Dec 1996 07:25:04 -0600
  1893. Organization: Delco Electronics
  1894.  
  1895. In article <583btj$d9s@noc2.drexel.edu>, Paulin
  1896. <st93eft3@dunx1.ocs.drexel.edu> wrote:
  1897.  
  1898. > I am at a lost so I hope someone here can assist me.  Here is what I am
  1899. > trying to do.  I set up a while loop.  I locate the volume reference
  1900. > number and the directory ID.  I go into that directory and I plan on
  1901. > loading one file at a time.  In my loop I load the file, get some needed
  1902. > info from it, check the info, then move/delete the file if the info is
  1903. > wrong.  
  1904. > So here is my question.  How to I load one file at a time in my loop.  Is
  1905. > there some easy way to do it just by incramenting something in the
  1906. > Paramblock of the Director ID, or something.  Please help.  This has been
  1907. > killing me for the past 3 weeks.  I can't seem to figure it out and the
  1908. > Inside Macintosh books don't seem to be helping.  If you can give info as
  1909. > well as some example or a place to read up on it, I am all ears.  Thanks
  1910. > to anyone that can help. 
  1911.  
  1912.  
  1913.   void iterate_through_directory(short v_ref_num, long dir_id)
  1914.   {
  1915.     //  Get catalog info on the directory to iterate through.
  1916.  
  1917.     CInfoPBRec pb;
  1918.     pb.hFileInfo.ioCompletion = nil;     /* No completion routine */
  1919.     pb.dirInfo.ioNamePtr = nil;          /* Don't care about name */
  1920.     pb.dirInfo.ioFDirIndex = -1;         /* Use dirID */
  1921.     pb.dirInfo.ioVRefNum = v_ref_num;    /* Your volume ref num */
  1922.     pb.dirInfo.ioDrDirID = dir_id;       /* Your dirID */
  1923.     OSErr error = PBGetCatInfoSync(&pb);
  1924.  
  1925.     // If got info on directory OK, iterate through it.
  1926.  
  1927.     if(noErr == error)
  1928.     {
  1929.       short num_items = pb.dirInfo.ioDrNmFls;
  1930.       Str32 item_name;
  1931.  
  1932.       //  For all items in directory, get catalog info for the i-th item.
  1933.  
  1934.       for(short i=1; i<=num_items; i++)
  1935.       {
  1936.         pb.dirInfo.ioNamePtr = (StringPtr)item_name; /* Returned name */
  1937.         pb.dirInfo.ioVRefNum = v_ref_num;            /* Volume */
  1938.         pb.dirInfo.ioFDirIndex = i;                  /* Index # */
  1939.         pb.dirInfo.ioDrDirID = dir_id;               /* This Directory */
  1940.         error = PBGetCatInfoSync(&pb);
  1941.  
  1942.         // If got info on the i-th item OK, "process" it.
  1943.  
  1944.         if(noErr == error)
  1945.         {
  1946.           // At this point, the CInfoPBRec pb is valid, and filled
  1947.           // with all kinds of information about the item (file or
  1948.           // folder).  Consult IM IV, or NIM: Files for more info
  1949.           // on the CInfoPBRec structure.
  1950.  
  1951.           // So now you can process the item in whatever way you see
  1952.           // fit.  Note however, if you move or delete the item, you
  1953.           // will have one less item in your directory, and your
  1954.           // indices will get messed up.
  1955.  
  1956.           // For example, if you move the item whose index is 4 to
  1957.           // the trash, and there used to be 20 items in the dir-
  1958.           // ectory, there will now only be 19 items in the directory,
  1959.           // and the item that _was_ #5 (before the move) will now
  1960.           // be #4, and you'll end up skipping it when you move on
  1961.           // to #5 (the _new_ #5, which was #6 before -- basically,
  1962.           // you end up only processing every other item).
  1963.  
  1964.           // 2 ways around this that I know of:  (1) do the for() loop
  1965.           // backwards (i.e., for(short i=num_items; i>=1; i--)).  This
  1966.           // way, when you move item #4, you've already processed items
  1967.           // 5 and above, so no problem.  (2) build a linked list of
  1968.           // the items to be moved within the for() loop, then process
  1969.           // the list of items to be moved after the for() loop is
  1970.           // completed.
  1971.         } /* End if got info on i-th item OK */
  1972.       } /* End for all items in the directory */
  1973.     } /* End if got info on directory OK */
  1974.   } /* End iterate_through_directory */
  1975.  
  1976. --
  1977. Richard E. Fiegle
  1978. Opinions expressed are mine, not necessarily those of my employer
  1979.  
  1980. +++++++++++++++++++++++++++
  1981.  
  1982. >From grayowl@sover.net (Vinay Prabhakar)
  1983. Date: Fri, 06 Dec 1996 09:15:52 -0500
  1984. Organization: Gray Owl Software
  1985.  
  1986. In article <583btj$d9s@noc2.drexel.edu>, Paulin
  1987. <st93eft3@dunx1.ocs.drexel.edu> wrote:
  1988.  
  1989. > I am at a lost so I hope someone here can assist me.  Here is what I am
  1990. > trying to do.  I set up a while loop.  I locate the volume reference
  1991. > number and the directory ID.  I go into that directory and I plan on
  1992. > loading one file at a time.  In my loop I load the file, get some needed
  1993. > info from it, check the info, then move/delete the file if the info is
  1994. > wrong.  
  1995. > So here is my question.  How to I load one file at a time in my loop.  Is
  1996. > there some easy way to do it just by incramenting something in the
  1997. > Paramblock of the Director ID, or something.  Please help.  This has been
  1998. > killing me for the past 3 weeks.  I can't seem to figure it out and the
  1999. > Inside Macintosh books don't seem to be helping.  If you can give info as
  2000. > well as some example or a place to read up on it, I am all ears.  Thanks
  2001. > to anyone that can help. 
  2002. > And if you can please send me email directly.  I don't get to the news
  2003. > group to oftent.  Thanks
  2004. > steve
  2005.  
  2006. I would check out the MoreFiles library for stuff like this. MoreFiles
  2007. comes with routines for looping through directories and the files in them
  2008. so you don't need to do the work for it. Try Apple's Web site to download
  2009. MoreFiles.
  2010.  
  2011. -- 
  2012. Vinay Prabhakar
  2013. Gray Owl Software
  2014.  
  2015. +++++++++++++++++++++++++++
  2016.  
  2017. >From David Gillies <daggilli@vader.brad.ac.uk>
  2018. Date: Mon, 09 Dec 1996 16:14:12 +0000
  2019. Organization: University of Bradford
  2020.  
  2021. Richard E. Fiegle wrote:
  2022. > In article <583btj$d9s@noc2.drexel.edu>, Paulin
  2023. > <st93eft3@dunx1.ocs.drexel.edu> wrote:
  2024. > > I am at a lost so I hope someone here can assist me.  Here is what I am
  2025. > > trying to do.  I set up a while loop.  I locate the volume reference
  2026. > > number and the directory ID.  I go into that directory and I plan on
  2027. > > loading one file at a time.  In my loop I load the file, get some needed
  2028. > > info from it, check the info, then move/delete the file if the info is
  2029. > > wrong.
  2030. > >
  2031. > > So here is my question.  How to I load one file at a time in my loop.  Is
  2032. > > there some easy way to do it just by incramenting something in the
  2033. > > Paramblock of the Director ID, or something.  Please help.  This has been
  2034. > > killing me for the past 3 weeks.  I can't seem to figure it out and the
  2035. > > Inside Macintosh books don't seem to be helping.  If you can give info as
  2036. > > well as some example or a place to read up on it, I am all ears.  Thanks
  2037. > > to anyone that can help.
  2038. >   void iterate_through_directory(short v_ref_num, long dir_id)
  2039. >   {
  2040. >     //  Get catalog info on the directory to iterate through.
  2041. >     CInfoPBRec pb;
  2042. >     pb.hFileInfo.ioCompletion = nil;     /* No completion routine */
  2043. >     pb.dirInfo.ioNamePtr = nil;          /* Don't care about name */
  2044. >     pb.dirInfo.ioFDirIndex = -1;         /* Use dirID */
  2045. >     pb.dirInfo.ioVRefNum = v_ref_num;    /* Your volume ref num */
  2046. >     pb.dirInfo.ioDrDirID = dir_id;       /* Your dirID */
  2047. >     OSErr error = PBGetCatInfoSync(&pb);
  2048. This would appear to be a bit redundant.
  2049.  
  2050. >     // If got info on directory OK, iterate through it.
  2051. >     if(noErr == error)
  2052. >     {
  2053. >       short num_items = pb.dirInfo.ioDrNmFls;
  2054. >       Str32 item_name;
  2055. >       //  For all items in directory, get catalog info for the i-th item.
  2056. >       for(short i=1; i<=num_items; i++)
  2057. >       {
  2058. I would say it is better to do something like
  2059.  
  2060. OSErr  fileErr;
  2061. short index=1;
  2062. do
  2063.   {
  2064.   pb.dirInfo.ioDrDirID=dir_id;
  2065.   pb.dirInfo.ioFDirIndex=index++;
  2066.  
  2067.   fileErr=PBGetCatInfoSync(&pb);
  2068.  
  2069.   }while(fileErr==noErr);
  2070.  
  2071. since this eleiminates the need to county the files in the first
  2072. place. This is a matter of personal taste however.
  2073.  
  2074. Richard then mentions methods of tracking directory contents while
  2075. stuff is going on underneath - this is a perennial probelm and one which
  2076. I solve with linked lists, as he suggests. However, System 7 users
  2077. might like to consider the following: using FSSpecs is wasteful since
  2078. they take a minimum of 70 bytes even with optimal (memory-wise)
  2079. packing. I use file IDs instead. I have routines like the following:
  2080.  
  2081. #define kMaxFileIDs 100
  2082.  
  2083. typedef struct FileListElem
  2084.   {
  2085.   struct FileListElemPtr     *next;
  2086.   short                      numIDs;
  2087.   short                      refNum[kMaxFileIDs];
  2088.   long                       fileID[kMaxFileIDs];
  2089.   }FileListElem *FileListElemPtr;
  2090.  
  2091. In the directory scanning routines I do something like this:
  2092. FileListElemPtr    listHead=NULL;
  2093.  
  2094. AddListElem(&listHead);
  2095.  
  2096. fileErr=PBGetCatInfoSync(&pb);
  2097.  
  2098. if((fileErr==noErr)&&((pb.hFileInfo.ioFlAttrib&0x10)==0)) // it's a file
  2099.  {
  2100.  if(listHead->next.numIDs==kMaxFileIDs)
  2101.    AddListElem(&listHead); // add an element to the list
  2102.  
  2103.  FSMakeFSSpec(vRefNum,dirID,name,&tempFSS);
  2104.  CreateFileID(&tempFSS,&fileID); // function to make a file ID
  2105.                                  // and return it
  2106.  listHead->next.refNum[listHead->next.numIDs]=vRefNum;
  2107.  listHead->next.fileID[listHead->next.numIDs++]=fileID;
  2108.  }
  2109.  
  2110. You can then do you stuff by iterating through the list. I use arrays
  2111. of refNums and fileIDs to cut down on the number of list allocations.
  2112.  
  2113. -- 
  2114. ______________________________________________________________________
  2115. David A. G. Gillies                        (daggilli@vader.brad.ac.uk)
  2116.       University of Bradford, Bradford, West Yorkshire, England
  2117. _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2118.  
  2119. ---------------------------
  2120.  
  2121. >From Joel May <jmay@merle.acns.nwu.edu>
  2122. Subject: Launch app with arg
  2123. Date: Thu, 12 Dec 1996 12:11:50 -0600
  2124. Organization: Harmonic Vision, Inc.
  2125.  
  2126. I need create a mini-app that launches Netscape then go directly
  2127. to our home page.  I can launch Netscape OK (using LaunchApplication()),
  2128. but I don't know how to supply our www address as an argument.
  2129. I do know how to send a high-level event with LaunchApplication()
  2130. to get an app to open or save a file, but supplying a www address
  2131. to Netscape has nothing to do with files.  
  2132.  
  2133. In Windows this is easy, its just an argument to the app, and the
  2134. app uses the old argc, argv[] business.  How do I do the same thing
  2135. on the Mac.
  2136.  
  2137. Thanks in advance,
  2138. Joel
  2139.  
  2140. +++++++++++++++++++++++++++
  2141.  
  2142. >From blob@ricochet.NOSPAM.net
  2143. Date: Thu, 12 Dec 1996 20:56:04 -0800
  2144. Organization: (none)
  2145.  
  2146. In article <32B04AE6.4B3F@merle.acns.nwu.edu>, jmay@nwu.edu wrote:
  2147.  
  2148. > I need create a mini-app that launches Netscape then go directly
  2149. > to our home page.
  2150.  
  2151. > In Windows this is easy, its just an argument to the app, and the
  2152. > app uses the old argc, argv[] business.  How do I do the same thing
  2153. > on the Mac.
  2154.  
  2155. Use the code on <ftp://ftpdev.apple.com> called LaunchWithDoc or read
  2156. technote 1002 at <http://devworld.apple.com/dev/technotes/tn/tn1002.html>
  2157. which has sample code included.
  2158.  
  2159. -- 
  2160. (Pointers to other Mac programming web sites at
  2161. <http://devworld.apple.com/dev/geeks.html>)
  2162.  
  2163. To reply personally, remove the anti-spam "NOSPAM." from the email address
  2164. in the header.
  2165.  
  2166. +++++++++++++++++++++++++++
  2167.  
  2168. >From balindauer@aol.com (BALindauer)
  2169. Date: 13 Dec 1996 07:47:12 GMT
  2170. Organization: AOL http://www.aol.com
  2171.  
  2172. >I need create a mini-app that launches Netscape then go directly
  2173. >to our home page.  I can launch Netscape OK (using LaunchApplication()),
  2174. >but I don't know how to supply our www address as an argument.
  2175. >I do know how to send a high-level event with LaunchApplication()
  2176. >to get an app to open or save a file, but supplying a www address
  2177. >to Netscape has nothing to do with files.  
  2178. No sweat.  You need to send an AppleEvent to NetScape.  You want to use
  2179. the Get URL AppleEvent (suite id = 'GURL', event id = 'GURL').  If you're
  2180. not familiar with AppleEvents, the following code should help.  Error
  2181. checking is an exercise left to the reader, as are the MyLaunchApp and
  2182. ApplicationIsRunning calls.
  2183.  
  2184. 8<-------------------------------------------- cut here
  2185. OSErr SendURL( Str255 theURL, FSSpec browserFS)
  2186. {
  2187.     AEAddressDesc        theTargetApp;
  2188.     AEDesc                theURLDesc;
  2189.     OSErr                err                =
  2190. 0;
  2191.     AppleEvent            aeEvent;
  2192.     ProcessSerialNumber    thePSN;
  2193.     
  2194.     if ( !ApplicationIsRunning( browserFS, &thePSN))
  2195.     {
  2196.         err = MyLaunchApp( browserFS, &thePSN);
  2197.     }
  2198.             
  2199.     err = AECreateDesc( typeProcessSerialNumber, &thePSN, sizeof(
  2200. thePSN), &theTargetApp);
  2201.         
  2202.     err = AECreateAppleEvent( 'GURL', 'GURL', &theTargetApp,
  2203. kAutoGenerateReturnID,
  2204.                                  
  2205. kAnyTransactionID, &aeEvent);
  2206.     AEDisposeDesc( &theTargetApp);
  2207.         
  2208.     err = AECreateDesc( typeChar, &theURL[1], theURL[0], &theURLDesc);
  2209.     err = AEPutParamDesc( &aeEvent, keyDirectObject, &theURLDesc);
  2210.     AEDisposeDesc( &theURLDesc);
  2211.     
  2212.     err = AESend( &aeEvent, nil, kAENoReply, kAENormalPriority,
  2213. kAEDefaultTimeout,nil,nil);
  2214.     AEDisposeDesc( &aeEvent);
  2215.     
  2216.     return err;
  2217. }
  2218. 8<-------------------------------------------- cut here
  2219.  
  2220. Hope this helps...
  2221.  
  2222. --Bradley
  2223.  
  2224.  
  2225.  
  2226. - --------------------------------------
  2227. Bradley Lindauer
  2228. Software Engineer, New Technologies Group
  2229. Miro Computer Products, Inc.
  2230. balindauer@aol.com
  2231. blind@miro.mirousa.com
  2232.  
  2233. +++++++++++++++++++++++++++
  2234.  
  2235. >From Kenneth Lu <kenlu@mit.edu>
  2236. Date: Fri, 13 Dec 1996 03:22:36 -0500
  2237. Organization: M.I.T.
  2238.  
  2239. In article <32B04AE6.4B3F@merle.acns.nwu.edu>, jmay@nwu.edu wrote:
  2240.  
  2241. > I need create a mini-app that launches Netscape then go directly
  2242. > to our home page.
  2243.  
  2244. > In Windows this is easy, its just an argument to the app, and the
  2245. > app uses the old argc, argv[] business.  How do I do the same thing
  2246. > on the Mac.
  2247.  
  2248. If that's all you want to do.. there is NO PROGRAMMING NECESSARY!
  2249.  
  2250. Simply save a text file with only the url as its content.
  2251.  
  2252. Then edit the creator of the file to 'MOSS', which is Netscape's
  2253. creator, and the type to 'URL ' (u-r-l-space).
  2254.  
  2255. That's it!  The file is now a Netscape url file.
  2256.  
  2257.   When double-clicked, it will lead to you the url!
  2258.  
  2259. Ambrosia has this in their two latest games, Avara and Bubble Trouble..
  2260. they have files which link to their homepage.
  2261.  
  2262. -ToastyKen
  2263.  
  2264. - -----------------------------
  2265. | Kenneth Lu -- kenlu@mit.edu |
  2266. - -----------------------------
  2267.  
  2268. ---------------------------
  2269.  
  2270. >From photopres@aol.com
  2271. Subject: Launching a program
  2272. Date: 10 Dec 1996 03:21:01 GMT
  2273. Organization: AOL http://www.aol.com
  2274.  
  2275. I have an app that launches an program via the Process Manager. I want the
  2276. Process Manager to send an 'odoc' Apple Event to the lanuched program. To
  2277. do this you send a Data type AppParameters along to the Process Manager
  2278. (Page 2-20 Process Manager Reference book Inside Mac). The problem is: How
  2279. in the world do you specify the file to be opened in the messageBuffer of
  2280. the AppParameters data type. I've tried passing an AEDesclist in there,
  2281. but that doesn't work. Any suggestions where I can look. I'm getting a
  2282. blister on my thumb, thumbing through Inside Mac. The only thing I can
  2283. find is on 2-21 in Process Manager Reference. Is says: The nature of this
  2284. data varies accourding to the event being sent. That's not much help!
  2285.  
  2286. Thanks
  2287. Jeff
  2288. photopres@aol.com
  2289.  
  2290. +++++++++++++++++++++++++++
  2291.  
  2292. >From andyb@apple.com (Andy Bachorski)
  2293. Date: Mon, 09 Dec 1996 23:43:49 -0700
  2294. Organization: (none)
  2295.  
  2296. In article <19961210032000.WAA03313@ladder01.news.aol.com>,
  2297. photopres@aol.com wrote:
  2298.  
  2299. >I have an app that launches an program via the Process Manager. I want the
  2300. >Process Manager to send an 'odoc' Apple Event to the lanuched program. To
  2301. >do this you send a Data type AppParameters along to the Process Manager
  2302. >(Page 2-20 Process Manager Reference book Inside Mac). The problem is: How
  2303. >in the world do you specify the file to be opened in the messageBuffer of
  2304. >the AppParameters data type. I've tried passing an AEDesclist in there,
  2305. >but that doesn't work.
  2306.  
  2307. Oh, but you got soooo close. What you need to do is build an 'odoc' Apple
  2308. event, specifying the Finder as the target, and the document to be opened
  2309. as the direct parameter, the pass this as the appParameter.
  2310.  
  2311. As has already been stated, see tech note 1002 for the details
  2312.  
  2313. Andy B
  2314.  
  2315. +++++++++++++++++++++++++++
  2316.  
  2317. >From blob@ricochet.NOSPAM.net
  2318. Date: Mon, 09 Dec 1996 21:53:46 -0700
  2319. Organization: (none)
  2320.  
  2321. In article <19961210032000.WAA03313@ladder01.news.aol.com>,
  2322. photopres@aol.com wrote:
  2323.  
  2324. >...How... do you specify the file to be opened in the messageBuffer of
  2325. > the AppParameters data type.
  2326.  
  2327. See technote 1002 at
  2328. <http://devworld.apple.com/dev/technotes/tn/tn1002.html> for an complete
  2329. discussion of this.
  2330.  
  2331. -- 
  2332. (Pointers to other Mac programming web sites at
  2333. <http://devworld.apple.com/dev/geeks.html>)
  2334.  
  2335. To reply personally, remove the anti-spam "NOSPAM." from the email address
  2336. in the header.
  2337.  
  2338. +++++++++++++++++++++++++++
  2339.  
  2340. >From jwwalker@kagi.com (James W. Walker)
  2341. Date: Mon, 09 Dec 1996 21:32:54 -0800
  2342. Organization: Nisus Software, Inc.
  2343.  
  2344. In article <19961210032000.WAA03313@ladder01.news.aol.com>,
  2345. photopres@aol.com wrote:
  2346.  
  2347. >I have an app that launches an program via the Process Manager. I want the
  2348. >Process Manager to send an 'odoc' Apple Event to the lanuched program. To
  2349. >do this you send a Data type AppParameters along to the Process Manager
  2350. >(Page 2-20 Process Manager Reference book Inside Mac). The problem is: How
  2351. >in the world do you specify the file to be opened in the messageBuffer of
  2352. >the AppParameters data type.
  2353.  
  2354. Apple has a "code snippet" for this, named LaunchWithDoc.  You can find it
  2355. on developer CDs, or on the web site.
  2356.  
  2357. <http://devworld.apple.com/dev/techsupport/source/code/Snippets/Processes/La
  2358. unchWithDoc2.1/ReadMe.html>
  2359. -- 
  2360.   --  Jim Walker <http://members.aol.com/jwwalker/>
  2361.  
  2362. +++++++++++++++++++++++++++
  2363.  
  2364. >From dmorrow@fast.net (Daniel Morrow)
  2365. Date: Wed, 11 Dec 1996 20:27:47 -0500
  2366. Organization: SDO
  2367.  
  2368. In article <andyb-0912962343500001@mg131-167.ricochet.net>,
  2369. andyb@apple.com (Andy Bachorski) wrote:
  2370.  
  2371. >In article <19961210032000.WAA03313@ladder01.news.aol.com>,
  2372. >photopres@aol.com wrote:
  2373. >
  2374. >>I have an app that launches an program via the Process Manager. I want the
  2375. >>Process Manager to send an 'odoc' Apple Event to the lanuched program. To
  2376. >>do this you send a Data type AppParameters along to the Process Manager
  2377. >>(Page 2-20 Process Manager Reference book Inside Mac). The problem is: How
  2378. >>in the world do you specify the file to be opened in the messageBuffer of
  2379. >>the AppParameters data type. I've tried passing an AEDesclist in there,
  2380. >>but that doesn't work.
  2381. >
  2382. >Oh, but you got soooo close. What you need to do is build an 'odoc' Apple
  2383. >event, specifying the Finder as the target, and the document to be opened
  2384. >as the direct parameter, the pass this as the appParameter.
  2385. >
  2386. >As has already been stated, see tech note 1002 for the details
  2387. >
  2388. >Andy B
  2389.  
  2390. Almost, but not quite. You forgot one crucial step:
  2391.  
  2392. After you create the 'odoc' event with the Finder as the target, and the
  2393. document as the direct parameter, you need to call "AECoerceDesc" to a
  2394. "typeAppParameters" Apple Event descriptor. The data handle of that Apple
  2395. Event can then be used for the AppParamters flag.
  2396.  
  2397. P.S. - I'm not sure if the actual type is "typeAppParameters" but it is
  2398. something close. Again, all the details are in technote 1002.
  2399.  
  2400. -Dan.
  2401.  
  2402. ---------------------------
  2403.  
  2404. >From dunham@pensee.com (David Dunham)
  2405. Subject: Launching application by signature
  2406. Date: Tue, 17 Dec 1996 16:09:00 -0800
  2407. Organization: Pensee Corporation
  2408.  
  2409. Given an application's 4-character signature, is there any way to launch
  2410. it (presumably by sending an Apple Event to the Finder)?
  2411.  
  2412. It appears that to use PBDTGetAPPLSync I need to know what volume the
  2413. application is on. LaunchWithDoc2 (in Snippets) does a bunch of looping...
  2414. is this the only approach?
  2415.  
  2416. David Dunham   Pensee Corporation   dunham@pensee.com
  2417. Voice/Fax: 206 783 7404             http://www.pensee.com/dunham/
  2418.     "I say we should listen to the customers and give them what they want."
  2419.     "What they want is better products for free." --Scott Adams
  2420.  
  2421. +++++++++++++++++++++++++++
  2422.  
  2423. >From jeff@nts.com (Jeff Miller)
  2424. Date: Tue, 17 Dec 1996 18:01:00 -0800
  2425. Organization: Network TeleSystems, Inc.
  2426.  
  2427. In article <dunham-1712961609000001@white-rose.pensee.com>,
  2428. dunham@pensee.com (David Dunham) wrote:
  2429.  
  2430. > Given an application's 4-character signature, is there any way to launch
  2431. > it (presumably by sending an Apple Event to the Finder)?
  2432.  
  2433. Not that I know of.  You can tell the Finder to launch an application
  2434. given an FSSpec, though.
  2435.  
  2436. > It appears that to use PBDTGetAPPLSync I need to know what volume the
  2437. > application is on. LaunchWithDoc2 (in Snippets) does a bunch of looping...
  2438. > is this the only approach?
  2439.  
  2440. This is what we do, and it works fine.  Is there a reason you can't do that?
  2441.  
  2442. Jeff
  2443.  
  2444. - ----------------------------------------------------------
  2445.  Jeff Miller  |  jeff@nts.com  |  Network TeleSystems, Inc.
  2446. - ----------------------------------------------------------
  2447.  
  2448. +++++++++++++++++++++++++++
  2449.  
  2450. >From mh@primenet.com (Mark Hartman)
  2451. Date: 17 Dec 1996 23:21:02 -0700
  2452. Organization: Mark Hartman Computer Solutions
  2453.  
  2454. In article <dunham-1712961609000001@white-rose.pensee.com>,
  2455. dunham@pensee.com (David Dunham) wrote:
  2456.  
  2457. >Given an application's 4-character signature, is there any way to launch
  2458. >it (presumably by sending an Apple Event to the Finder)?
  2459.  
  2460. Directly?  No, not really.  I've got a LaunchBySignature routine, but it
  2461. requires a whole bunch of support routines to do it right.  Let me know if
  2462. you really want it.
  2463. ======================================================================
  2464. Mark Hartman Computer Solutions - specializing in all things Macintosh
  2465.    C  C++   4th Dimension   Networking   System design/architecture
  2466. tel +1(714)758.0640 -+- fax +1(714)999.5030 -+- e-mail mh@primenet.com
  2467. ======================================================================
  2468.     "But it's not a fair test!  People LIKE to use the Macintosh!"
  2469.  
  2470. ---------------------------
  2471.  
  2472. >From Johan <JSO0605@kp.ssdn.skelleftea.se>
  2473. Subject: PPC ExitToShell Patch?
  2474. Date: Mon, 16 Dec 1996 08:39:53 -0800
  2475. Organization: Skelleftea Kommun
  2476.  
  2477. Can anyone please tell me how to make a PPC ExitToShell Patch?
  2478. I need a PPC function of: AtExitToShell that i found in VideoToolbox.
  2479.  
  2480. - -
  2481.  Johan Sˆrlin / johan.sorlin@mailbox.hogia.net
  2482.  
  2483. +++++++++++++++++++++++++++
  2484.  
  2485. >From mxmora@mxmdesigns.com (Matthew Xavier Mora)
  2486. Date: Mon, 16 Dec 1996 21:55:08 -0800
  2487. Organization: MXM DesignsÅ
  2488.  
  2489. In article <32B57B59.566A@kp.ssdn.skelleftea.se>,
  2490. JSO0605@kp.ssdn.skelleftea.se wrote:
  2491.  
  2492. > Can anyone please tell me how to make a PPC ExitToShell Patch?
  2493. > I need a PPC function of: AtExitToShell that i found in VideoToolbox.
  2494.  
  2495.  
  2496. Install a CFM Termination routine. In MW look in the Linker
  2497. pref panel (I think). Type in the name of the routine that you 
  2498. want called when your app exits.
  2499.  
  2500. Xavier
  2501.  
  2502. -- 
  2503. Matthew Xavier Mora                    <mailto:mxmora@mxmdesigns.com>
  2504.                                <http://www.best.com/~mxmora/mxm.html>
  2505.  
  2506.  
  2507. +++++++++++++++++++++++++++
  2508.  
  2509. >From SouthSide@kagi.com (Bob Bradley)
  2510. Date: Mon, 16 Dec 1996 20:53:48 -0800
  2511. Organization: SPC
  2512.  
  2513. In article <32B57B59.566A@kp.ssdn.skelleftea.se>,
  2514. JSO0605@kp.ssdn.skelleftea.se wrote:
  2515.  
  2516. > Can anyone please tell me how to make a PPC ExitToShell Patch?
  2517. > I need a PPC function of: AtExitToShell that i found in VideoToolbox.
  2518.  
  2519. You can use the CFM Termination routine to do what an ExitToShell patch
  2520. would do for non-CFM 68K code. Otherwise, you just need to create a
  2521. RoutineDescriptor to your patched ExitToShell instead of passing just a
  2522. ProcPtr to SetToolTrapAddress.
  2523.  
  2524. Check out the Code Fragment Manager chapter in Inside Mac: PowerPC System
  2525. Software.
  2526.  
  2527. ---------------------------
  2528.  
  2529. >From John Kelly <kellyj@advtech.uswest.com>
  2530. Subject: RPC for Macintosh
  2531. Date: Mon, 16 Dec 1996 11:17:19 -0700
  2532. Organization: U S West Advanced Technologies
  2533.  
  2534. Does anyone know where (or if) RPC tools have been ported to the Mac? 
  2535.  
  2536. Many thanks,
  2537.  
  2538. -- 
  2539. John F. Kelly                      
  2540.  
  2541. - ---BEGIN GEEK CODE BLOCK-----
  2542. GS d s+:+ a C++(+++)$ ULC+++(++++)$ P+++ L+++>$ E-(---) W+(++) N++ !o
  2543. K-- w--- O M+ V-- PS++ PE- Y PGP t-- !5 X? R- tv b+++ DI+++ D-- G e+++ 
  2544. h--- r+++ y+++ 
  2545. - ----END GEEK CODE BLOCK------
  2546.  
  2547. +++++++++++++++++++++++++++
  2548.  
  2549. >From jpek@genecodes.com (Jeff Pek)
  2550. Date: 17 Dec 1996 17:25:50 GMT
  2551. Organization: Gene Codes Corp
  2552.  
  2553. In article <32B5922F.FF6D5DF@advtech.uswest.com>
  2554. John Kelly <kellyj@advtech.uswest.com> writes:
  2555.  
  2556. > Does anyone know where (or if) RPC tools have been ported to the Mac? 
  2557.  
  2558. Try EZRPC from NobleNet - <http://www.noblenet.com>
  2559. hth - jeff
  2560.  
  2561. - ------
  2562. Jeff Pek
  2563. Development Manager
  2564. Gene Codes Corp - Ann Arbor, MI
  2565. jpek@genecodes.com
  2566.  
  2567. +++++++++++++++++++++++++++
  2568.  
  2569. >From noblenet@world.std.com (NobleNet Inc.)
  2570. Date: Thu, 19 Dec 1996 07:51:19 GMT
  2571. Organization: NobleNet, Inc.
  2572.  
  2573. In article <32B5922F.FF6D5DF@advtech.uswest.com>,
  2574. John Kelly  <kellyj@advtech.uswest.com> wrote:
  2575. >Does anyone know where (or if) RPC tools have been ported to the Mac? 
  2576.  
  2577. Please contact NobleNet for ONC/RPC tools and solutions for UNIX,
  2578. Windows (3.1/95/NT), Macintosh, VMS, OS/2, NetWare, VxWorks, etc.
  2579.  
  2580.         NobleNet, Inc.
  2581.         337 Turnpike Road
  2582.         Southboro, MA  01772
  2583.         Voice +1 508 460 8222
  2584.         Fax +1 508 460 3456
  2585.         <sales@noblenet.com>
  2586.         <http://www.noblenet.com/>
  2587.  
  2588.  
  2589. PRESS RELEASE
  2590.  
  2591. For Immediate Release
  2592.  
  2593. For Further Information, Please Contact:
  2594.  
  2595. David Burns
  2596. Vice President of Marketing
  2597. NobleNet, Inc.
  2598. Voice: (508) 460-8222
  2599. FAX: (508) 460-3456
  2600. e-mail: david.burns@noblenet.com
  2601.  
  2602.  
  2603. "The Client/Server Toolkit for C and C++ Programmers"
  2604. New Book From NobleNet Turns Programmers Into Client/Server Experts
  2605.  
  2606. New York, October 8, 1996 --  NobleNet, Inc. today announced the availability
  2607. of its newly published book that turns C and C++ programmers into
  2608. client/server experts.   Co-authored by middleware experts Steven Lemmo and
  2609. Rich Grehan, The Client/Server Toolkit for C and C++ Programmers  is a self-
  2610. contained instructional tool that teaches programmers how to distribute any
  2611. application or Application Programming Interface (API) across a network.
  2612.  
  2613. The CD-ROM software included with The Client/Server Toolkit features a unique
  2614. Windows-based client/server simulator that lets programmers gain hands-on
  2615. experience in client/server partitioning.  Programmers are guided through four
  2616. "real-world" client/server projects: distributed ODBC database, scanner
  2617. device, image engine, and datafeed.  The authors expertise combined with a
  2618. Rapid Application Development (RAD) environment, demystifies the art of
  2619. distributing complex applications.
  2620.  
  2621. "I learned more about client/server development in the last three days of
  2622. reading your book than I learned in the past few years of doing C and C++
  2623. programming," said Pascal Specht, Technical Sales Engineer at Precision
  2624. Software in Paris, France.
  2625.  
  2626. "Our new book will help any C or C++ programmer that wants to learn about
  2627. state-of-the-art client/server computing," said Steve Lemmo, co-author and
  2628. Chief Technology Officer of NobleNet.  "The techniques taught in the book will
  2629. help programmers learn to use the powerful Interface Definition Languages
  2630. (IDLs) found in today's most popular distributed computing middleware."
  2631. Beginning with a monolithic application, readers learn how to separate
  2632. programs into independent parts that communicate with each other.  While other
  2633. books on client/server computing include sample code, The Client/Server
  2634. Toolkit goes further and delivers a true client/server Software Development
  2635. Toolkit (SDK) designed for application partitioning.  Unlike other approaches,
  2636. programmers learn to build client/server applications using industry-standard
  2637. RPC technology that requires no source code changes.
  2638.  
  2639. "The Client/Server Toolkit is ideal for programmers that want to get a quick
  2640. immersion into client/server computing with tools that require very little
  2641. effort to learn,"  said Vincent Russo, Assistant Professor of Computer Science
  2642. at Purdue University.  "I like the fact that the book is totally self-
  2643. contained.  It has a wealth of real-world examples that provide the reader
  2644. with a thorough understanding of client/server development.  And the simulator
  2645. gives programmers hands-on experience with building and running real
  2646. client/server applications."
  2647.  
  2648. Although The Client/Server Toolkit is written for C and C++ programmers,
  2649. examples are given that show "drag and drop" programmers how to create
  2650. client/server applications utilizing popular GUI front-ends such as Visual
  2651. Basic, PowerBuilder, Delphi, and Developer 2000.  Distributed with the book is
  2652. a free version of NobleNet's powerful standards-based RPC product used by
  2653. client/server developers world-wide.  Programmers are presented with client
  2654. and server Windows connected by a simulated network.  Using NobleNet RPC,
  2655. applications developed on the simulator are easily deployed to over 40
  2656. platforms including 26 UNIXes, Windows 3.1, 95, and NT, NetWare, Macintosh,
  2657. OS/2, and VMS.  More than 20 Windows-based TCP/IP stacks are supported to
  2658. ensure operation in existing multi-vendor environments.
  2659.  
  2660. Co-author Steven Lemmo founded NobleNet, engineered NobleNet's first software
  2661. product, EZ-RPC(R), and led the team that developed the company's NetWare and
  2662. Windows-based middleware tools.  With an in-depth understanding of both
  2663. communication and application software, he is a sought after consultant on RPC
  2664. programming.  Steve has over fifteen years of experience in software
  2665. engineering and tools development in companies such as Computervision Corp.,
  2666. Sun Microsystems, Inc., and Xerox Imaging Systems, Inc.  He is widely
  2667. recognized as an expert on distributed computing and is frequently called upon
  2668. to appear at industry forums.
  2669.  
  2670. Co-author Rick Grehan has been on the editorial staff of BYTE Magazine for
  2671. over 11 years.  He is currently the Technical Director of BYTE Labs and the
  2672. author of BYTE's monthly CodeTalk column.  His articles have appeared in BYTE,
  2673. Embedded Systems Programming, and Forth Dimensions.  In addition, he was a
  2674. contributor to the 1993 edition of The Encyclopedia of Microcomputers,
  2675. published by Marcel Dekker, Inc.  Rick is also the designer of BYTE Magazine's
  2676. BYTEmark benchmark suite.
  2677.  
  2678. The Client/Server Toolkit for C and C++ Programmers is published by NobleNet.
  2679. The 350 page book with CD-ROM can be ordered for $49.95 by calling (800)-250-
  2680. 6427 or (508)-893-0398.
  2681.  
  2682. NobleNet offers tools for distributed client/server development for procedural
  2683. and object paradigms. Incorporated in 1991, NobleNet is a world leader in
  2684. Remote Procedure Call (RPC) technology and has won numerous awards for its RPC
  2685. product family.   NobleNet also distributes IONA Technologies' industry-
  2686. leading "Orbix" CORBA-compliant Object Request Broker. The company is
  2687. headquartered in Southboro, MA, and can be reached at (508) 460-8222 or at
  2688. <http://www.noblenet.com/>.
  2689.  
  2690.  
  2691. ---------------------------
  2692.  
  2693. >From "Jon Espen Carlsen" <jonec@online.no>
  2694. Subject: Shutdown utility for mac
  2695. Date: 12 Dec 1996 19:58:48 GMT
  2696. Organization: Telenor Online Public Access
  2697.  
  2698. Anyone who knows of a util that displays a image (pict/bmp etc.) for a short
  2699. while before restarting or shutting down the mac (Macos 7.5.3)???
  2700.  
  2701. Jon Espen Carlsen
  2702.  
  2703. +++++++++++++++++++++++++++
  2704.  
  2705. >From "Jon Espen Carlsen" <jonec@online.no>
  2706. Date: 13 Dec 1996 18:59:29 GMT
  2707. Organization: Telenor Online Public Access
  2708.  
  2709.  
  2710. > >Anyone who knows of a util that displays a image (pict/bmp etc.) for a
  2711. short
  2712. > >while before restarting or shutting down the mac (Macos 7.5.3)???
  2713. >      You might be able to do something with the "Shutdown Items"
  2714. >        items folder in the system.  Simplest solution would be
  2715. >        to include a graphic document in that folder with the
  2716. >        message/image you want displayed...
  2717.  
  2718. Yes I know, but Shutdown Items only opens the file in the application that
  2719. created the document.
  2720. I would like to see a utility who displays a image for a brief time before
  2721. shutting down without any user influence on the programme.
  2722.  
  2723. Any ideas?
  2724.  
  2725. Jon Espen Carlsen
  2726.  
  2727. +++++++++++++++++++++++++++
  2728.  
  2729. >From Online@MacTech.com ( nick.c @MT )
  2730. Date: Thu, 12 Dec 1996 17:46:30 -0800
  2731. Organization: MacTech Magazine
  2732.  
  2733.  
  2734.  
  2735. "Jon Espen Carlsen" <jonec@online.no> wrote:
  2736.  
  2737. >Anyone who knows of a util that displays a image (pict/bmp etc.) for a short
  2738. >while before restarting or shutting down the mac (Macos 7.5.3)???
  2739.  
  2740.  
  2741.      You might be able to do something with the "Shutdown Items"
  2742.        items folder in the system.  Simplest solution would be
  2743.        to include a graphic document in that folder with the
  2744.        message/image you want displayed...
  2745.  
  2746.  
  2747.  
  2748.  
  2749. ____Nicholas C. DeMello, Ph.D.___________________________________________
  2750. "MacTech Online"--MacTech Magazine, for Mac OS Programmers and Developers
  2751.      http://www.MacTech.com/
  2752.                                         _/   _/  _/  _/_/_/   _/   _/  
  2753.    Chemistry: Nick@chem.UCLA.edu       _/_/ _/  _/  _/   _/  _/_/_/ 
  2754.      MacTech: Online@MacTech.com      _/ _/_/  _/  _/       _/ _/    
  2755.         http://www.chem.ucla.edu/~nick/   _/  _/   _/_/_/  _/   _/     
  2756.  
  2757. +++++++++++++++++++++++++++
  2758.  
  2759. >From Joseph Strout <jstrout@ucsd.edu>
  2760. Date: Fri, 13 Dec 1996 15:45:10 -0800
  2761. Organization: The Avant-Garde of the Now, Ltd.
  2762.  
  2763. On 13 Dec 1996, Jon Espen Carlsen wrote:
  2764.  
  2765. > > >Anyone who knows of a util that displays a image (pict/bmp etc.) for a
  2766. > short
  2767. > > >while before restarting or shutting down the mac (Macos 7.5.3)???
  2768. > > 
  2769. > >      You might be able to do something with the "Shutdown Items"
  2770. > >        items folder in the system.  Simplest solution would be
  2771. > >        to include a graphic document in that folder with the
  2772. > >        message/image you want displayed...
  2773. > Yes I know, but Shutdown Items only opens the file in the application that
  2774. > created the document.
  2775. > I would like to see a utility who displays a image for a brief time before
  2776. > shutting down without any user influence on the programme.
  2777.  
  2778. So write a little Applescript that displays a picture for a few seconds,
  2779. then exits.  To display the picture, I think you could use
  2780. GraphicConverter, JPEGview, clip2gif, etc.  Put the Applescript in your
  2781. Shutdown Items folder once you've got it working.
  2782.  
  2783. ,------------------------------------------------------------------.
  2784. |    Joseph J. Strout           Department of Neuroscience, UCSD   |
  2785. |    jstrout@ucsd.edu           http://www-acs.ucsd.edu/~jstrout/  |
  2786. `------------------------------------------------------------------'
  2787.  
  2788.  
  2789. ---------------------------
  2790.  
  2791. >From ghinkle@red.seas.upenn.edu (Gregory J Hinkle)
  2792. Subject: [Q] Bringing my application to front
  2793. Date: 5 Dec 1996 00:21:40 GMT
  2794. Organization: University of Pennsylvania
  2795.  
  2796. What does it entail to bring a process to the foreground. I am writing an 
  2797. application that after certain periods of inactivity will come to front 
  2798. and perform tasks. (Screen Saver etc.) Does anyone know of a relativly 
  2799. simple way to do this(I don't want to break what works so far). Thanks 
  2800. for any help.
  2801.  
  2802. --
  2803. *******************************************************************************
  2804. *   _/_/_/    _/    _/  |  University of Pennsylvania, School of Engineering  *
  2805. *  _/    _/   _/    _/  |---------------------------------------------------- *
  2806. *  _/         _/    _/  |  Box 0859                  |  Drive Defensivly...   *
  2807. *  _/  _/_/   _/_/_/_/  |  3901 Locust Walk          |      Buy a Tank.       *
  2808. *  _/    _/   _/    _/  |  Philadelphia, Pa 19104    |    --Greg Hinkle--     *
  2809. *    _/_/     _/    _/  |-----------------------------------------------------*
  2810. *_______________________|        http://homepage.seas.upenn.edu/~ghinkle/     *
  2811. *    Greg      Hinkle   |             ghinkle@eniac.seas.upenn.edu            *
  2812. *******************************************************************************
  2813.  
  2814. +++++++++++++++++++++++++++
  2815.  
  2816. >From davea@atlas.co.uk (Dave)
  2817. Date: Thu, 05 Dec 1996 15:47:15 +0000
  2818. Organization: Atlas Internet
  2819.  
  2820. Firstly your signature is bigger than your message!
  2821.  
  2822. The process Manager will do the job for you.
  2823.  
  2824. You want to call GetCurrentProcess to find your own Process Serial Number
  2825. , then SetFrontProcess passing the Process Serial Number returned.
  2826.  
  2827.  
  2828. Dave
  2829.  
  2830. ie,
  2831.  
  2832. OSErr iErr;
  2833. ProcessSerialNumber PSN;
  2834.  
  2835.  
  2836. iErr = GetCurrentProcess(&PSN);
  2837.  
  2838. iErr = SetFrontProcess(&PSN);
  2839.  
  2840. /*add error handling*/
  2841.  
  2842. You may like to check if you are the front process by calling:
  2843. iErr = GetFrontProcess(&PSN);
  2844. and comparing it against your process serial number using _SameProcess
  2845. OSErr iErr;
  2846. ProcessSerialNumber PSN,PSN2;
  2847. Boolean result;
  2848.  
  2849. iErr = SameProcess(&PSN,&PSN2,&result);
  2850.  
  2851. The result is a Boolean.
  2852. You must use SameProcess to compare two processes, the interpretation of
  2853. the bits in the process serial number is internal to the process manager.
  2854.  
  2855. In article <5854ik$1ve@netnews.upenn.edu>, ghinkle@red.seas.upenn.edu
  2856. (Gregory J Hinkle) wrote:
  2857.  
  2858. > What does it entail to bring a process to the foreground. I am writing an 
  2859. > application that after certain periods of inactivity will come to front 
  2860. > and perform tasks. (Screen Saver etc.) Does anyone know of a relativly 
  2861. > simple way to do this(I don't want to break what works so far). Thanks 
  2862. > for any help.
  2863. > --
  2864.  
  2865. +++++++++++++++++++++++++++
  2866.  
  2867. >From bhamlin@zocalo.net (Brian Hamlin)
  2868. Date: 9 Dec 1996 21:59:41 GMT
  2869. Organization: Noesis Software Construction
  2870.  
  2871. In article <davea-0512961547150001@193.131.167.44>, davea@atlas.co.uk
  2872. (Dave) wrote:
  2873.  
  2874. > You want to call GetCurrentProcess to find your own Process Serial Number
  2875. > , then SetFrontProcess passing the Process Serial Number returned.
  2876.  
  2877.   A couple of gotcha's..
  2878.   Note that SetFrontProcess() is a request to send to the front. You aren't
  2879.   in the front when it returns, and you may not come to the front at all !
  2880.   So use the following:
  2881. > You may like to check if you are the front process by calling:
  2882. > iErr = GetFrontProcess(&PSN);
  2883. > and comparing it against your process serial number using _SameProcess
  2884. > OSErr iErr;
  2885. > ProcessSerialNumber PSN,PSN2;
  2886. > Boolean result;
  2887. > iErr = SameProcess(&PSN,&PSN2,&result);
  2888. > The result is a Boolean.
  2889. > You must use SameProcess to compare two processes, the interpretation of
  2890. > the bits in the process serial number is internal to the process manager.
  2891.  
  2892.  
  2893.   If there is a ModalDialog up in the foreground, you won't swap.
  2894.   (for example)
  2895.  
  2896. -- 
  2897. Brian M Hamlin                        bhamlin@screenlight.com
  2898. NSC Software Construction                      (510) 271-7971
  2899.  
  2900. ---------------------------
  2901.  
  2902. >From zaphod@dna.ca (Zaphod)
  2903. Subject: [Q] Fading in Thousands
  2904. Date: Tue, 3 Dec 1996 19:25:04 -0500
  2905. Organization: dna.ca
  2906.  
  2907. It appears that use color table fading doesn't work in thousands of
  2908. colours mode.
  2909. Anybody have any source for such a task?  Perhaps even some pointers in
  2910. the right direction?
  2911. I wonder if it's even possible...
  2912.  
  2913. -Zaphod.
  2914.  
  2915. - ---------------------------------------------------------------
  2916. - Brian Cantin, a.k.a. Zaphod    (zaphod@dna.ca)                -
  2917. - Co-owner of Euphoria Cyberware (cp820@freenet.carleton.ca)    -
  2918. - Computer Programming : The leading cause of caffine addiction -
  2919. - ---------------------------------------------------------------
  2920.  
  2921. +++++++++++++++++++++++++++
  2922.  
  2923. >From fprefect@ambrosiasw.com (Matt Slot)
  2924. Date: Wed, 04 Dec 1996 11:14:09 -0500
  2925. Organization: Ambrosia Software
  2926.  
  2927.  > It appears that use color table fading doesn't work in thousands of
  2928.  > colours mode.
  2929.  > Anybody have any source for such a task?  Perhaps even some pointers in
  2930.  > the right direction?
  2931.  > I wonder if it's even possible...
  2932.  
  2933. Check out the updated Color Gamma library which can fade a monitor at any
  2934. depth to a given color. Demo and source are available at Info-Mac and other
  2935. archives:
  2936.  
  2937.    <ftp://mirrors.aol.com/pub/info-mac/dev/lib/color-gamma-10-c.hqx>
  2938.  
  2939. Matt
  2940.  
  2941.  
  2942. * * * * * * * * * * * * * * * * * * * * * * * * * * ======================
  2943. *  Reality: Matt Slot, Bitwise Operator           *  Time is an illusion.
  2944. *  E-Mail:  mailto:fprefect@umich.edu             *  Lunchtime doubly so.
  2945. *  Web:     http://www.sils.umich.edu/~fprefect/  *     -- Douglas Adams
  2946. * * * * * * * * * * * * * * * * * * * * * * * * * * ======================
  2947.  
  2948. +++++++++++++++++++++++++++
  2949.  
  2950. >From "Rick Genter" <rgenter@5dgames.com>
  2951. Date: 4 Dec 1996 15:10:49 GMT
  2952. Organization: 5D Games, Inc.
  2953.  
  2954. You need to use a gamma fade. There is code on the net; do a search for
  2955. "gamma fade". The source I've seen is in Pascal.
  2956. -- 
  2957. Rick Genter
  2958. VP of R&D
  2959. 5D Games, Inc.
  2960. rgenter@5dgames.com
  2961. <http://www.5dgames.com>
  2962.  
  2963. Zaphod <zaphod@dna.ca> wrote in article
  2964. <msg5258.thr-14ecea.4c4dc6@dna.ca>...
  2965. > It appears that use color table fading doesn't work in thousands of
  2966. > colours mode.
  2967. > Anybody have any source for such a task?  Perhaps even some pointers in
  2968. > the right direction?
  2969. > I wonder if it's even possible...
  2970. > -Zaphod.
  2971. > -----------------------------------------------------------------
  2972. > - Brian Cantin, a.k.a. Zaphod    (zaphod@dna.ca)                -
  2973. > - Co-owner of Euphoria Cyberware (cp820@freenet.carleton.ca)    -
  2974. > - Computer Programming : The leading cause of caffine addiction -
  2975. > -----------------------------------------------------------------
  2976.  
  2977. +++++++++++++++++++++++++++
  2978.  
  2979. >From alexr@bungie.com (Alex Rosenberg)
  2980. Date: Wed, 04 Dec 1996 09:34:23 -0600
  2981. Organization: Hackers Anonymous
  2982.  
  2983. In article <msg5258.thr-14ecea.4c4dc6@dna.ca>, zaphod@dna.ca (Zaphod) wrote:
  2984.  
  2985. >It appears that use color table fading doesn't work in thousands of
  2986. >colours mode.
  2987.  
  2988. You're looking for the cscDirectSetEntries call to the video driver.
  2989.  
  2990. - ----------------------------------------------------
  2991. |  Alexander M. Rosenberg   <mailto:alexr@bungie.com>|
  2992. |  Bungie Software          <http://www.bungie.com>  |
  2993. |  Nobody cares what I say.                          |
  2994.  
  2995. +++++++++++++++++++++++++++
  2996.  
  2997. >From Kenneth Lu <kenlu@mit.edu>
  2998. Date: Tue, 17 Dec 1996 17:14:51 -0500
  2999. Organization: M.I.T.
  3000.  
  3001. Try downloading Ingemar Ragnemalm's Sprite Animation Toolkit (SAT).
  3002.  
  3003. It's available on Info-Mac.
  3004.  
  3005. It has an addon library that does clut animations (for any depth) with
  3006. source code.
  3007.  
  3008. -ToastyKen
  3009.  
  3010. - -----------------------------
  3011. | Kenneth Lu -- kenlu@mit.edu |
  3012. | http://mit.edu/kenlu/www/   |
  3013. - -----------------------------
  3014.  
  3015. ---------------------------
  3016.  
  3017. >From David Reiss <reiss@astro.washington.edu>
  3018. Subject: [Q] Playing QT Movies Backwards?
  3019. Date: Mon, 02 Dec 1996 15:40:43 -0800
  3020. Organization: http://www.astro.washington.edu/reiss
  3021.  
  3022. How does one do this (in code)?  I know it's possible, but I can't find
  3023. any seemingly relevant calls in the Movies.h header.
  3024.  
  3025. Thanks for any info.
  3026.  
  3027. -David
  3028.  
  3029. +++++++++++++++++++++++++++
  3030.  
  3031. >From trickys@ix.netcom.com (Tricky S)
  3032. Date: Mon, 02 Dec 1996 20:15:36 -0600
  3033. Organization: Tricky S Software Factory
  3034.  
  3035. In article <32A368FB.488@astro.washington.edu>, David Reiss
  3036. <reiss@astro.washington.edu> wrote:
  3037.  
  3038. > How does one do this (in code)?  I know it's possible, but I can't find
  3039. > any seemingly relevant calls in the Movies.h header.
  3040. > Thanks for any info.
  3041. > -David
  3042.  
  3043. Try this:
  3044.  
  3045. #define BACKWARDS_HALF_SPEED       0xFFFF8000 // reverse, 1/2 speed
  3046. #define BACKWARDS_1_SPEED          0xFFFF0000 // reverse, normal speed
  3047. #define BACKWARDS_2_SPEED          0xFFFE0000 // reverse, 2X speed
  3048.  
  3049. // some variables...
  3050. Movie gMoviel;
  3051. MovieController gController;
  3052. ....
  3053. // later in your code, when you want to play
  3054. // an opened movie backwards, do this:
  3055. ComponentResult  result;
  3056. // play backwards at normal speed
  3057. result = MCDoAction( gController, mcActionPlay, (Ptr)BACKWARDS_1_SPEED);
  3058.  
  3059. Hope that helps,
  3060. -S
  3061.  
  3062.  _____________
  3063. \ ____________\
  3064. ||  _________  | Stefan Sinclair
  3065. || /@--------\ | <mailto:trickys@ix.netcom.com>
  3066. || |         | | <http://members.aol.com/trickys/>
  3067. || |         | | 
  3068. || \_________/ | 
  3069. ||       ____  |
  3070. || o Mac       |
  3071. \|_____________|
  3072.  \|___________|
  3073.  
  3074. +++++++++++++++++++++++++++
  3075.  
  3076. >From kfalk@rogerswave.ca (Eric Falk)
  3077. Date: Wed, 04 Dec 1996 15:43:33 -0800
  3078. Organization: Cool Dude
  3079.  
  3080. In article <32A368FB.488@astro.washington.edu>, David Reiss
  3081. <reiss@astro.washington.edu> wrote:
  3082.  
  3083. > How does one do this (in code)?  I know it's possible, but I can't find
  3084. > any seemingly relevant calls in the Movies.h header.
  3085. > Thanks for any info.
  3086. > -David
  3087.  
  3088.  
  3089. Heres how is MCDoAction: (in C)
  3090.  
  3091. MCDoAction( theController, X, (Ptr)True );
  3092.  
  3093. X =   0xFFFF8000 back half speed
  3094.       0xFFFF0000 back normal
  3095.       0xFFFE0000 back double speed
  3096.  
  3097. or sometthing like this. Or while the movie's open shift double click the movie.
  3098. Eric Falk
  3099.  
  3100. +++++++++++++++++++++++++++
  3101.  
  3102. >From Maf Vosburgh <maf@mmcorp.com>
  3103. Date: 10 Dec 1996 19:04:20 GMT
  3104. Organization: MultiMedia Corporation
  3105.  
  3106. In article <32A368FB.488@astro.washington.edu> David Reiss,
  3107. reiss@astro.washington.edu writes:
  3108. >How does one do this (in code)?  I know it's possible, but I can't find
  3109. >any seemingly relevant calls in the Movies.h header.
  3110.  
  3111. Set the rate to -1.
  3112.  
  3113.  
  3114. Maf
  3115.  
  3116. ---------------------------
  3117.  
  3118. >From hsoi@eden.com (John C. Daub)
  3119. Subject: [Q] Show-Hide menubar with QuickTime??
  3120. Date: Sun, 08 Dec 1996 16:28:39 -0600
  3121. Organization: Hsoi's Shop
  3122.  
  3123.  
  3124. Hi all!
  3125.  
  3126. I know how to show/hide the menu bar with my own code, but I remember
  3127. reading something somewhere that this was finally implimented in the
  3128. toolbox.
  3129.  
  3130. like a part of QuickTime 2.1 or something.
  3131.  
  3132. Any information on this? (docs, what headers, prototypes, minimal system
  3133. requirement (I think just QT 2.1)), etc.
  3134.  
  3135. thanx.
  3136.  
  3137. Oh, please post the response but also email me it too.  Thanx :)
  3138.  
  3139. -- 
  3140.                         John C. Daub (aka Hsoi)
  3141.          <mailto:hsoi@eden.com>  <http://www.eden.com/~hsoi/>
  3142.               "I'm suckin' up more karma than I need...
  3143.               So have a supernova on me" - Dave Wyndorf
  3144.  
  3145. +++++++++++++++++++++++++++
  3146.  
  3147. >From Dave Howell <dshowell@worldnet.att.net>
  3148. Date: Mon, 09 Dec 1996 23:19:17 -0800
  3149. Organization: Pablo Media
  3150.  
  3151. John C. Daub sez:
  3152. > Hi all!
  3153. > I know how to show/hide the menu bar with my own code, but I remember
  3154. > reading something somewhere that this was finally implimented in the
  3155. > toolbox.
  3156. > like a part of QuickTime 2.1 or something.
  3157. > Any information on this? (docs, what headers, prototypes, minimal system
  3158. > requirement (I think just QT 2.1)), etc.
  3159. > thanx.
  3160.  
  3161. John,
  3162.  
  3163. Maybe what you're referring to is one of the QuickTime samples, a
  3164. MovieController component written by John Wang in Apple DTS. The
  3165. MovieController inherits everything from the standard MovieController
  3166. component but also lets you hit the tab key to play back full-screen
  3167. with no menu bar. Check out the source code to this sample.
  3168.  
  3169. Another approach might be to use the DrawSprocket, but depending on what
  3170. you're doing this might be overkill, and it only runs on PowerPC.
  3171.  
  3172. Dave
  3173. ___________________________ ___     _   _        __  __        _ _
  3174.        Dave Howell         | o \___| |_| | ___  |  \/  |___  _| |_| ___
  3175.        Pablo Media         |  _/ o | o \ |/ o \ | |  | | o_\/ o | |/ o |
  3176. ___________________________|_| \___|___/_|\___/ |_|\/|_|___/\___|_|\___|
  3177.  
  3178. +++++++++++++++++++++++++++
  3179.  
  3180. >From bitzm@apple.com (Mike Bitz)
  3181. Date: Tue, 10 Dec 1996 12:03:30 -0700
  3182. Organization: Apple Computer, Inc.
  3183.  
  3184. > > I know how to show/hide the menu bar with my own code, but I remember
  3185. > > reading something somewhere that this was finally implimented in the
  3186. > > toolbox.
  3187.  
  3188. BeginFullScreen and EndFullScreen were introduced with QuickTime 2.1. 
  3189. When your code is bracketed by these calls, QuickTime will hide the
  3190. menubar, clear the screen corners, and create a background color matte if
  3191. necessary.
  3192.  
  3193. These functions are documented in the QuickTime 2.1 developer note which
  3194. is available on the Internet at:
  3195.  
  3196. <ftp://ftpdev.info.apple.com/Developer_Services/Development_Kits/QuickTime/Programming_Stuff/QT_2.1_for_Developers.sit.hqx>
  3197.  
  3198. -Mike
  3199.  bitzm@apple.com
  3200.  
  3201. +++++++++++++++++++++++++++
  3202.  
  3203. >From squires@crl.com (Scott Squires)
  3204. Date: Tue, 10 Dec 1996 23:19:34 -0800
  3205. Organization: Puffin Designs
  3206.  
  3207. In article <32AD0EF4.72E7@worldnet.att.net>,
  3208. Dave Howell <dshowell@worldnet.att.net> wrote:
  3209.  
  3210. >John C. Daub sez:
  3211. >> 
  3212. >> Hi all!
  3213. >> 
  3214. >> I know how to show/hide the menu bar with my own code, but I remember
  3215. >> reading something somewhere that this was finally implimented in the
  3216. >> toolbox.
  3217. >> 
  3218. >> like a part of QuickTime 2.1 or something.
  3219. >> 
  3220. >> Any information on this? (docs, what headers, prototypes, minimal system
  3221. >> requirement (I think just QT 2.1)), etc.
  3222. >> 
  3223. >> thanx.
  3224. >
  3225. >John,
  3226. >
  3227. >Maybe what you're referring to is one of the QuickTime samples, a
  3228. >MovieController component written by John Wang in Apple DTS. The
  3229. >MovieController inherits everything from the standard MovieController
  3230. >component but also lets you hit the tab key to play back full-screen
  3231. >with no menu bar. Check out the source code to this sample.
  3232. >
  3233. >Another approach might be to use the DrawSprocket, but depending on what
  3234. >you're doing this might be overkill, and it only runs on PowerPC.
  3235. >
  3236.  
  3237. Actually QuickTime has calls specifically for this.
  3238.  
  3239.  
  3240. Check in Movies.h QT header.  These will auto-resize a multisync monitor to
  3241. display a smaller image if you want as well. Check out the flags in the
  3242. same file.
  3243.  
  3244. -scott
  3245.  
  3246.  
  3247. OSErr BeginFullScreen(Ptr *restoreState, GDHandle whichGD, short
  3248. *desiredWidth, short *desiredHeight, WindowPtr *newWindow, RGBColor
  3249. *eraseColor, long flags)
  3250.   
  3251.  
  3252.   pascal OSErr EndFullScreen(Ptr fullState, long flags)
  3253.  
  3254. Scott Squires               "Insert funny stuff here"
  3255. squires@crl.com
  3256. ScottSquir@aol.com
  3257.  
  3258.  
  3259. ---------------------------
  3260.  
  3261. >From craig@epic.co.uk (Craig Emery)
  3262. Subject: [Q] Suspended or Hidden: How do I tell?
  3263. Date: Tue, 10 Dec 1996 17:42:14 +0000
  3264. Organization: Epic Miltimedia Group
  3265.  
  3266.     Dear All,
  3267.  
  3268.     does anyone know if there is a way to tell if a suspend event relates
  3269. to losing focus or actually being hidden?
  3270.  
  3271.     I'm a cross-platform (Mac and PC) programmer and am trying to find a
  3272. metaphore for the PC's minimise / maximise and simply losing focus. ;-)
  3273.  
  3274. TIA.
  3275. Craig.
  3276.  
  3277.  ----------------------------------------------------------------------- 
  3278. | Norman Craig Emery B.Sc.,                            craig@epic.co.uk |
  3279. | Team Leader / Senior CDi Programmer &  CRAIG.EPIC@applelink.apple.com |
  3280. | Macintosh Programming Coordinator, Voice: +44 (0) (1273) 320637       |
  3281. | The Epic Multimedia Group,                 Fax: +44 (0) (1273) 821567 |
  3282. |               http://www.epic.co.uk/                                  |
  3283. |     VPS House, 52 Old Steine, Brighton, East Sussex, BN1 1NH, U.K.    |
  3284.  -----------------------------------------------------------------------
  3285.  
  3286. +++++++++++++++++++++++++++
  3287.  
  3288. >From dmorrow@fast.net (Daniel Morrow)
  3289. Date: Wed, 11 Dec 1996 20:33:12 -0500
  3290. Organization: SDO
  3291.  
  3292. In article <craig-ya023180001012961742140001@proxy.epic.co.uk>,
  3293. craig@epic.co.uk (Craig Emery) wrote:
  3294.  
  3295. >    Dear All,
  3296. >
  3297. >    does anyone know if there is a way to tell if a suspend event relates
  3298. >to losing focus or actually being hidden?
  3299. >
  3300. >    I'm a cross-platform (Mac and PC) programmer and am trying to find a
  3301. >metaphore for the PC's minimise / maximise and simply losing focus. ;-)
  3302. >
  3303. >TIA.
  3304. >Craig.
  3305. >
  3306.  
  3307. You can only tell if your process is the front-most process. Basically you
  3308. call GetCurrentProcess and GetFrontProcess and compare the two
  3309. ProcessSerialNumbers.
  3310.  
  3311. But there is no way to tell if your program is hidden. Only the System
  3312. know that, and it's not telling.
  3313.  
  3314. -Dan.
  3315.  
  3316. +++++++++++++++++++++++++++
  3317.  
  3318. >From Michael Rayter <mirayter@worldnet.att.net>
  3319. Date: Wed, 11 Dec 1996 23:45:35 -0800
  3320. Organization: AT&T WorldNet Services
  3321.  
  3322. > You can only tell if your process is the front-most process. Basically you
  3323. > call GetCurrentProcess and GetFrontProcess and compare the two
  3324. > ProcessSerialNumbers.
  3325. > But there is no way to tell if your program is hidden. Only the System
  3326. > know that, and it's not telling.
  3327. > -Dan.
  3328.  
  3329. No, there must be a way. In Script Editor, we can find out
  3330. the value of property 'visible' of object 'application process'.
  3331. That means sending an appropriate Apple Event to Finder (or compiling
  3332. and executing a script from within the application). But I believe
  3333. there is something less complicated.
  3334.  
  3335. ---------------------------
  3336.  
  3337. >From stian@mail.utexas.edu (Stian Oksavik)
  3338. Subject: [Q] Useful error messages?
  3339. Date: 7 Dec 1996 18:10:41 GMT
  3340. Organization: University of Texas at Austin
  3341.  
  3342. Currently, whenever my program encounters an error as the result of a
  3343. toolbox call, it will call an error handler with the result code of the
  3344. call. For example, a missing resource will result in the handler
  3345. displaying a dialog:
  3346.  
  3347. Sorry, a fatal error occurred.
  3348. System error: Unknown error (ID -192)
  3349.  
  3350. How do I make my code display more informative messages, like
  3351.  
  3352. Sorry, a fatal error occured.
  3353. System error: Resource not found (-192)
  3354.  
  3355. There must be a way of doing this, since I see alerts like this in the
  3356. system software and in other programs. Considering the number of errors
  3357. that one can potentially get, I find it unlikely that every program is
  3358. expected to know the meaning of all these and include appropriate English
  3359. error messages. Using CW10, in case this is in a header file somewhere.
  3360.  
  3361. Any hints on how to do this will be very welcome.
  3362.  
  3363. Thanks,
  3364. -Stian
  3365.  
  3366. +++++++++++++++++++++++++++
  3367.  
  3368. >From stian@mail.utexas.edu (Stian Oksavik)
  3369. Date: 9 Dec 1996 10:43:31 GMT
  3370. Organization: University of Texas at Austin
  3371.  
  3372. In article <58d2p9$h7t@netnews.upenn.edu>, kurisuto@babel.ling.upenn.edu
  3373. (Sean Crist) wrote:
  3374.  
  3375. [snip]
  3376.  
  3377.  > The system doesn't provide you any help here; it's up to you to provide the
  3378.  > text.  However, since the majority of errors never come up in finished
  3379.  > apps, you just need to decide which one's you're going to supply text for
  3380.  > (disk full, read/write error, etc.).  A good programming strategy is to
  3381.  > have a single routine for error reporting which you call from throughout
  3382.  > your program.  You store meaningful strings for the more common errors in a
  3383.  > STR# resource, and stick this text into your alert using ParamText.
  3384.  >
  3385.  > If the sample alert text you've provided is supposed to be only for
  3386.  > programmer consumption (for debugging purposes), it doesn't matter too much
  3387.  > how you word your alert.  But you intend the user to see this text, then
  3388.  > you should read "Macintosh Human Interface Guidelines" for recommendations
  3389.  > about how to make your text more useful to the user.  For example, if your
  3390.  > app gets a "resource not found" error when opening a user-created document,
  3391.  > you should say something like 'The document "My Document" could not be
  3392.  > opened, because it appears to be damaged (-192).'  This will be much less
  3393.  > opaque to the user.
  3394.  
  3395. The way my application currently works is to tell the user:
  3396.  
  3397. Sorry, a fatal error has occurred:
  3398. Wrong password (internal error ID = 5)
  3399. [Quit]
  3400.  
  3401. for system errors, it currently says:
  3402.  
  3403. Sorry, a fatal error has occurred:
  3404. Unknown error (system error ID = -192)
  3405.  
  3406. The ID number in the case of system errors is obtained either by a call to
  3407. ResError(), QDError() or whatever is appropriate, or simply as the return
  3408. value from a toolbox call.
  3409.  
  3410. In this project, 90% of the code is for handling things like multitasking,
  3411. Apple Events, window updates, errors, etc ad nauseum. My next project will
  3412. probably be to write a tiny application shell for use in future projects.
  3413. (I know that many already exist, but I think I want to write my own to
  3414. keep it lean and small.)
  3415.  
  3416. For now, I guess my users will just have to put up with Unknown errors.
  3417. Most such errors are handled internally in my application before they ever
  3418. reach the error handler, so a missing resource would most likely result in
  3419.  
  3420. Sorry, a fatal error has occurred:
  3421. AccessMaster has been tampered with (internal error ID = 8)
  3422. [Quit]
  3423.  
  3424. So hopefully, system errors shouldn't show up too often. And if they do,
  3425. hey, it'll be freeware - you get what you pay for ;-)
  3426.  
  3427. -Stian
  3428.  
  3429. +++++++++++++++++++++++++++
  3430.  
  3431. >From David Reiss <reiss@astro.washington.edu>
  3432. Date: Tue, 10 Dec 1996 17:41:56 -0800
  3433. Organization: http://www.astro.washington.edu/reiss
  3434.  
  3435. I've seen a publicly available set of STR# resources with strings for
  3436. the most
  3437. common type of error you get in a Mac app.  The index of the string
  3438. corresponds
  3439. to the error number, so it should be as easy as...
  3440.  
  3441. void DoError( OSErr inErr ) {
  3442.     Str255 errStr;
  3443.     GetIndString( errStr, myErrorStrings, inErr );
  3444.     ParamText( errStr, "\p", "\p", "\p" ); // or whatever
  3445.     Alert( myAlertRsrcID ); // Not sure of the exact form of this call...
  3446. }
  3447.  
  3448. Search the info-mac site for these resources...
  3449.  
  3450. -David
  3451.  
  3452. Stian Oksavik wrote:
  3453. > In article <58d2p9$h7t@netnews.upenn.edu>, kurisuto@babel.ling.upenn.edu
  3454. > (Sean Crist) wrote:
  3455. > [snip]
  3456. >  > The system doesn't provide you any help here; it's up to you to provide the
  3457. >  > text.  However, since the majority of errors never come up in finished
  3458. >  > apps, you just need to decide which one's you're going to supply text for
  3459. >  > (disk full, read/write error, etc.).  A good programming strategy is to
  3460. >  > have a single routine for error reporting which you call from throughout
  3461. >  > your program.  You store meaningful strings for the more common errors in a
  3462. >  > STR# resource, and stick this text into your alert using ParamText.
  3463. >  >
  3464. >  > If the sample alert text you've provided is supposed to be only for
  3465. >  > programmer consumption (for debugging purposes), it doesn't matter too much
  3466. >  > how you word your alert.  But you intend the user to see this text, then
  3467. >  > you should read "Macintosh Human Interface Guidelines" for recommendations
  3468. >  > about how to make your text more useful to the user.  For example, if your
  3469. >  > app gets a "resource not found" error when opening a user-created document,
  3470. >  > you should say something like 'The document "My Document" could not be
  3471. >  > opened, because it appears to be damaged (-192).'  This will be much less
  3472. >  > opaque to the user.
  3473. > The way my application currently works is to tell the user:
  3474. > Sorry, a fatal error has occurred:
  3475. > Wrong password (internal error ID = 5)
  3476. > [Quit]
  3477. > for system errors, it currently says:
  3478. > Sorry, a fatal error has occurred:
  3479. > Unknown error (system error ID = -192)
  3480. > The ID number in the case of system errors is obtained either by a call to
  3481. > ResError(), QDError() or whatever is appropriate, or simply as the return
  3482. > value from a toolbox call.
  3483. > In this project, 90% of the code is for handling things like multitasking,
  3484. > Apple Events, window updates, errors, etc ad nauseum. My next project will
  3485. > probably be to write a tiny application shell for use in future projects.
  3486. > (I know that many already exist, but I think I want to write my own to
  3487. > keep it lean and small.)
  3488. > For now, I guess my users will just have to put up with Unknown errors.
  3489. > Most such errors are handled internally in my application before they ever
  3490. > reach the error handler, so a missing resource would most likely result in
  3491. > Sorry, a fatal error has occurred:
  3492. > AccessMaster has been tampered with (internal error ID = 8)
  3493. > [Quit]
  3494. > So hopefully, system errors shouldn't show up too often. And if they do,
  3495. > hey, it'll be freeware - you get what you pay for ;-)
  3496. > -Stian
  3497.  
  3498. +++++++++++++++++++++++++++
  3499.  
  3500. >From jlha@se.bel.alcatel.be (Jaime Lopez Hartmann)
  3501. Date: 12 Dec 1996 08:00:01 GMT
  3502. Organization: Alcatel/Bell
  3503.  
  3504.  
  3505.  
  3506. Hi,
  3507.  
  3508.  Isn't it possible to use <errno.h> and <string.h>  to be able
  3509. to call strerror() ? and thus get the text that goes with the error???
  3510.  
  3511. cheers,
  3512.  
  3513. In article <58d2p9$h7t@netnews.upenn.edu>, kurisuto@babel.ling.upenn.edu (Sean Crist) writes:
  3514. |>[...]
  3515. |>>How do I make my code display more informative messages, like
  3516. |>>
  3517. |>>Sorry, a fatal error occured.
  3518. |>>System error: Resource not found (-192)
  3519. |>>
  3520. |>>There must be a way of doing this, since I see alerts like this in the
  3521. |>>system software and in other programs. Considering the number of errors
  3522. |>>that one can potentially get, I find it unlikely that every program is
  3523. |>>expected to know the meaning of all these and include appropriate English
  3524. |>>error messages. Using CW10, in case this is in a header file somewhere.
  3525. |>
  3526. |>The system doesn't provide you any help here; it's up to you to provide the
  3527. |>text.  However, since the majority of errors never come up in finished
  3528. |>apps, you just need to decide which one's you're going to supply text for
  3529. |>(disk full, read/write error, etc.).  A good programming strategy is to
  3530. |>have a single routine for error reporting which you call from throughout
  3531. |>your program.  You store meaningful strings for the more common errors in a
  3532. |>STR# resource, and stick this text into your alert using ParamText.
  3533. |>
  3534. |>[...]
  3535. --
  3536. Jaime Lopez Hartmann PhD      e-mail:    jlha@se.bel.alcatel.be
  3537. Alcatel Bell Antwerp-Belgium (Dept. se123)     Phone:(32) 3 240 41 45      
  3538.  
  3539. It is nice to be important, it is more important to be nice!
  3540.  
  3541.  
  3542. ---------------------------
  3543.  
  3544. End of C.S.M.P. Digest
  3545. **********************
  3546.